Overview
Comment: | Updated to use string for minirivet parsing |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | pure-c |
Files: | files | file ages | folders |
SHA3-256: |
2d9592486f3bc02b185a75f8732bef97 |
User & Date: | rkeene on 2019-12-02 03:09:33 |
Other Links: | branch diff | manifest | tags |
Context
2019-12-03
| ||
17:59 | Made Tcl and C version of "xvfs-create" more similar by re-ordering output check-in: 36d0805e0e user: rkeene tags: pure-c | |
2019-12-02
| ||
03:09 | Updated to use string for minirivet parsing check-in: 2d9592486f user: rkeene tags: pure-c | |
02:53 | Silence a warning check-in: 9f07de5ec5 user: rkeene tags: pure-c | |
Changes
Modified xvfs-create-c.c from [a3ef943f52] to [6584aa9678].
︙ | ︙ | |||
324 325 326 327 328 329 330 | } else { fprintf(outfp, "@INVALID@%s@INVALID@", buffer_p); } return; } | | < > < < < < < | | 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 | } else { fprintf(outfp, "@INVALID@%s@INVALID@", buffer_p); } return; } static int parse_xvfs_minirivet(FILE *outfp, const char * const template, const struct options * const options) { struct xvfs_state xvfs_state; int ch, ch_buf; int template_idx = 0; char tcl_buffer[8192], *tcl_buffer_p; enum xvfs_minirivet_mode mode; xvfs_state.child_count = 0; xvfs_state.child_len = 65536; xvfs_state.children = malloc(sizeof(*xvfs_state.children) * xvfs_state.child_len); #define parse_xvfs_minirivet_getbyte(var) var = template[template_idx]; template_idx++; if (var == 0) { break; } mode = XVFS_MINIRIVET_MODE_COPY; tcl_buffer_p = NULL; while (1) { parse_xvfs_minirivet_getbyte(ch); switch (mode) { |
︙ | ︙ | |||
410 411 412 413 414 415 416 | tcl_buffer_p++; break; } } #undef parse_xvfs_minirivet_getbyte | > > > > > > > > > > > > > > > > > > > > | | | > > > > > > | > > > > > > > > > | > > > > | 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 | tcl_buffer_p++; break; } } #undef parse_xvfs_minirivet_getbyte return(1); } static int xvfs_create(FILE *outfp, const struct options * const options) { const int template_len = 65536; const char * const template_file = "lib/xvfs/xvfs.c.rvt"; FILE *fp; char *template, *template_p; int template_remain; size_t fread_ret; int retval; fp = fopen(template_file, "r"); if (!fp) { return(0); } template = malloc(template_len); template_remain = template_len; if (!template) { fclose(fp); return(0); } template_p = template; while (1) { fread_ret = fread(template_p, 1, template_remain, fp); if (fread_ret <= 0) { break; } template_p += fread_ret; template_remain -= fread_ret; } if (template_remain > 0) { *template_p = '\0'; } fclose(fp); retval = parse_xvfs_minirivet(outfp, template, options); free(template); return(retval); } /* * Parse command line options */ static int parse_options(int argc, char **argv, struct options *options) { char *arg; |
︙ | ︙ |