Subversion Repositories SvarDOS

Rev

Rev 1966 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1966 Rev 1978
Line 41... Line 41...
41
#include "version.h"
41
#include "version.h"
42
 
42
 
43
 
43
 
44
enum ACTIONTYPES {
44
enum ACTIONTYPES {
45
  ACTION_INSTALL,
45
  ACTION_INSTALL,
46
  ACTION_UPDATE,
-
 
47
  ACTION_REMOVE,
46
  ACTION_REMOVE,
48
  ACTION_LISTFILES,
47
  ACTION_LISTFILES,
49
  ACTION_LISTLOCAL,
48
  ACTION_LISTLOCAL,
50
  ACTION_HEALTHCHECK,
49
  ACTION_HEALTHCHECK,
51
  ACTION_HEALTHCHECKEXT,
-
 
52
  ACTION_UNZIP,
50
  ACTION_UNZIP,
53
  ACTION_LISTZIP,
-
 
54
  ACTION_CRC32,
51
  ACTION_CRC32,
55
  ACTION_HELP
52
  ACTION_HELP
56
};
53
};
57
 
54
 
58
 
55
 
Line 78... Line 75...
78
  outputnl(svarlang_str(1, 41)); /* "It is configured through %DOSDIR%\CFG\PKG.CFG" */
75
  outputnl(svarlang_str(1, 41)); /* "It is configured through %DOSDIR%\CFG\PKG.CFG" */
79
  return(1);
76
  return(1);
80
}
77
}
81
 
78
 
82
 
79
 
83
static enum ACTIONTYPES parsearg(int argc, char * const *argv) {
80
static enum ACTIONTYPES parsearg(int argc, char * const *argv, unsigned char *flags) {
-
 
81
  *flags = 0;
-
 
82
 
84
  /* look for valid actions */
83
  /* look for valid actions */
85
  if ((argc == 3) && (strcasecmp(argv[1], "install") == 0)) {
84
  if ((argc == 3) && (strcasecmp(argv[1], "install") == 0)) {
86
    return(ACTION_INSTALL);
85
    return(ACTION_INSTALL);
87
  } else if ((argc == 3) && (strcasecmp(argv[1], "update") == 0)) {
86
  } else if ((argc == 3) && (strcasecmp(argv[1], "update") == 0)) {
-
 
87
    *flags = PKGINST_UPDATE;
88
    return(ACTION_UPDATE);
88
    return(ACTION_INSTALL);
89
  } else if ((argc == 3) && (strcasecmp(argv[1], "rm") == 0)) {
89
  } else if ((argc == 3) && (strcasecmp(argv[1], "rm") == 0)) {
90
    return(ACTION_REMOVE);
90
    return(ACTION_REMOVE);
91
  } else if ((argc == 3) && (strcasecmp(argv[1], "files") == 0)) {
91
  } else if ((argc == 3) && (strcasecmp(argv[1], "files") == 0)) {
92
    return(ACTION_LISTFILES);
92
    return(ACTION_LISTFILES);
93
  } else if ((argc >= 2) && (argc <= 3) && (strcasecmp(argv[1], "list") == 0)) {
93
  } else if ((argc >= 2) && (argc <= 3) && (strcasecmp(argv[1], "list") == 0)) {
94
    return(ACTION_LISTLOCAL);
94
    return(ACTION_LISTLOCAL);
95
  } else if ((argc >= 2) && (argc <= 3) && (strcasecmp(argv[1], "check") == 0)) {
95
  } else if ((argc >= 2) && (argc <= 3) && (strcasecmp(argv[1], "check") == 0)) {
96
    return(ACTION_HEALTHCHECK);
96
    return(ACTION_HEALTHCHECK);
97
  } else if ((argc >= 2) && (argc <= 3) && (strcasecmp(argv[1], "check+") == 0)) {
97
  } else if ((argc >= 2) && (argc <= 3) && (strcasecmp(argv[1], "check+") == 0)) {
-
 
98
    *flags = 1; /* extended check */
98
    return(ACTION_HEALTHCHECKEXT);
99
    return(ACTION_HEALTHCHECK);
99
  } else if ((argc == 3) && (strcasecmp(argv[1], "unzip") == 0)) {
100
  } else if ((argc == 3) && (strcasecmp(argv[1], "unzip") == 0)) {
100
    return(ACTION_UNZIP);
101
    return(ACTION_UNZIP);
101
  } else if ((argc == 3) && (strcasecmp(argv[1], "ziplist") == 0)) {
102
  } else if ((argc == 3) && (strcasecmp(argv[1], "ziplist") == 0)) {
-
 
103
    *flags = 1; /* list only */
102
    return(ACTION_LISTZIP);
104
    return(ACTION_UNZIP);
103
  } else if ((argc == 3) && (strcasecmp(argv[1], "crc32") == 0)) {
105
  } else if ((argc == 3) && (strcasecmp(argv[1], "crc32") == 0)) {
104
    return(ACTION_CRC32);
106
    return(ACTION_CRC32);
105
  } else {
107
  } else {
106
    return(ACTION_HELP);
108
    return(ACTION_HELP);
107
  }
109
  }
Line 166... Line 168...
166
 
168
 
167
int main(int argc, char **argv) {
169
int main(int argc, char **argv) {
168
  static unsigned char buff15k[15 * 1024];
170
  static unsigned char buff15k[15 * 1024];
169
  int res = 1;
171
  int res = 1;
170
  enum ACTIONTYPES action;
172
  enum ACTIONTYPES action;
-
 
173
  unsigned char actionflags;
171
  const char *dosdir;
174
  const char *dosdir;
172
  struct customdirs *dirlist;
175
  struct customdirs *dirlist;
173
  char bootdrive;
176
  char bootdrive;
174
 
177
 
175
  svarlang_autoload_exepath(argv[0], getenv("LANG"));   /* NLS init */
178
  svarlang_autoload_exepath(argv[0], getenv("LANG"));   /* NLS init */
176
 
179
 
177
  action = parsearg(argc, argv);
180
  action = parsearg(argc, argv, &actionflags);
178
  switch (action) {
181
  switch (action) {
179
    case ACTION_HELP:
182
    case ACTION_HELP:
180
      res = showhelp();
183
      res = showhelp();
181
      goto GAMEOVER;
184
      goto GAMEOVER;
182
    case ACTION_UNZIP:
185
    case ACTION_UNZIP:
183
      res = unzip(argv[2], 0, buff15k);
186
      res = unzip(argv[2], actionflags, buff15k);
184
      goto GAMEOVER;
-
 
185
    case ACTION_LISTZIP:
-
 
186
      res = unzip(argv[2], 1, buff15k);
-
 
187
      goto GAMEOVER;
187
      goto GAMEOVER;
188
    case ACTION_CRC32:
188
    case ACTION_CRC32:
189
      res = crcfile(argv[2], buff15k);
189
      res = crcfile(argv[2], buff15k);
190
      goto GAMEOVER;
190
      goto GAMEOVER;
191
  }
191
  }
Line 200... Line 200...
200
 
200
 
201
  /* load configuration */
201
  /* load configuration */
202
  if (loadconf(dosdir, &dirlist, &bootdrive) != 0) goto GAMEOVER;
202
  if (loadconf(dosdir, &dirlist, &bootdrive) != 0) goto GAMEOVER;
203
 
203
 
204
  switch (action) {
204
  switch (action) {
205
    case ACTION_UPDATE:
-
 
206
    case ACTION_INSTALL:
205
    case ACTION_INSTALL:
207
      res = pkginst(argv[2], (action == ACTION_UPDATE)?PKGINST_UPDATE:0, dosdir, dirlist, bootdrive, buff15k);
206
      res = pkginst(argv[2], actionflags, dosdir, dirlist, bootdrive, buff15k);
208
      break;
207
      break;
209
    case ACTION_REMOVE:
208
    case ACTION_REMOVE:
210
      res = pkgrem(argv[2], dosdir);
209
      res = pkgrem(argv[2], dosdir);
211
      break;
210
      break;
212
    case ACTION_LISTFILES:
211
    case ACTION_LISTFILES:
Line 214... Line 213...
214
      break;
213
      break;
215
    case ACTION_LISTLOCAL:
214
    case ACTION_LISTLOCAL:
216
      res = showinstalledpkgs((argc == 3)?argv[2]:NULL, dosdir);
215
      res = showinstalledpkgs((argc == 3)?argv[2]:NULL, dosdir);
217
      break;
216
      break;
218
    case ACTION_HEALTHCHECK:
217
    case ACTION_HEALTHCHECK:
219
    case ACTION_HEALTHCHECKEXT:
-
 
220
      res = healthcheck(buff15k, (argc == 3)?argv[2]:NULL, dosdir, (action == ACTION_HEALTHCHECKEXT)?1:0);
218
      res = healthcheck(buff15k, (argc == 3)?argv[2]:NULL, dosdir, actionflags);
221
      break;
219
      break;
222
    default:
220
    default:
223
      res = showhelp();
221
      res = showhelp();
224
      break;
222
      break;
225
  }
223
  }