Subversion Repositories SvarDOS

Rev

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

Rev 1284 Rev 1286
Line 218... Line 218...
218
    *uidirtyto = 0xff;
218
    *uidirtyto = 0xff;
219
  }
219
  }
220
}
220
}
221
 
221
 
222
 
222
 
-
 
223
/* a custom argv-parsing routine that looks directly inside the PSP, avoids the need
-
 
224
 * of argc and argv, saves some 330 bytes of binary size */
223
int main(int argc, char **argv) {
225
static char *parseargv(void) {
-
 
226
  char *tail = (void *)0x81; /* THIS WORKS ONLY IN SMALL MEMORY MODEL */
-
 
227
  unsigned char count = 0;
-
 
228
  char *argv[4];
-
 
229
 
-
 
230
  mdr_coutraw_puts(tail);
-
 
231
 
-
 
232
  while (count < 4) {
-
 
233
    /* jump to nearest arg */
-
 
234
    while (*tail == ' ') {
-
 
235
      *tail = 0;
-
 
236
      tail++;
-
 
237
    }
-
 
238
 
-
 
239
    if (*tail == '\r') {
-
 
240
      *tail = 0;
-
 
241
      break;
-
 
242
    }
-
 
243
 
-
 
244
    argv[count++] = tail;
-
 
245
 
-
 
246
    /* jump to next delimiter */
-
 
247
    while ((*tail != ' ') && (*tail != '\r')) tail++;
-
 
248
  }
-
 
249
 
-
 
250
  /* check args now */
-
 
251
  if (count != 1) return(NULL);
-
 
252
 
-
 
253
  return(argv[0]);
-
 
254
}
-
 
255
 
-
 
256
 
-
 
257
int main(void) {
224
  int fd;
258
  int fd;
225
  const char *fname = NULL;
259
  const char *fname;
226
  char buff[1024];
260
  char buff[1024];
227
  struct linedb db;
261
  struct linedb db;
228
  unsigned char screenw = 0, screenh = 0;
262
  unsigned char screenw = 0, screenh = 0;
229
  unsigned char cursorposx = 0, cursorposy = 0;
263
  unsigned char cursorposx = 0, cursorposy = 0;
230
  unsigned char uidirtyfrom = 0, uidirtyto = 0xff; /* make sure to redraw entire UI at first run */
264
  unsigned char uidirtyfrom = 0, uidirtyto = 0xff; /* make sure to redraw entire UI at first run */
231
 
265
 
232
  bzero(&db, sizeof(db));
266
  bzero(&db, sizeof(db));
233
 
267
 
234
  svarlang_autoload_nlspath("sved");
268
  svarlang_autoload_nlspath("sved");
235
 
269
 
-
 
270
  fname = parseargv();
-
 
271
 
236
  if ((argc != 2) || (argv[1][0] == '/')) {
272
  if (fname == NULL) {
237
    mdr_coutraw_puts("usage: sved file.txt");
273
    mdr_coutraw_puts("usage: sved file.txt");
238
    return(0);
274
    return(0);
239
  }
275
  }
240
 
276
 
241
  fname = argv[1];
-
 
242
 
-
 
243
  mdr_coutraw_puts("");
277
  mdr_coutraw_puts("");
244
 
278
 
245
  if (_dos_open(fname, O_RDONLY, &fd) != 0) {
279
  if (_dos_open(fname, O_RDONLY, &fd) != 0) {
246
    mdr_coutraw_puts("Failed to open file:");
280
    mdr_coutraw_puts("Failed to open file:");
247
    mdr_coutraw_puts(fname);
281
    mdr_coutraw_puts(fname);