void xfs_init(libxfs_init_t *args) { memset(args, 0, sizeof(libxfs_init_t)); if (isa_file) { args->disfile = 1; args->dname = fs_name; args->volname = NULL; } else { args->disfile = 0; args->volname = fs_name; args->dname = NULL; } if (log_spec) { /* External log specified */ args->logname = log_name; args->lisfile = (isa_file?1:0); /* XXX assume data file also means log file */ /* REVISIT: Need to do fs sanity / log validity checking */ } if (rt_spec) { /* RT device specified */ args->rtname = rt_name; args->risfile = (isa_file?1:0); /* XXX assume data file also means rt file */ } args->usebuflock = do_prefetch; args->setblksize = 0; args->isdirect = LIBXFS_DIRECT; if (no_modify) args->isreadonly = (LIBXFS_ISREADONLY | LIBXFS_ISINACTIVE); else if (dangerously) args->isreadonly = (LIBXFS_ISINACTIVE | LIBXFS_DANGEROUSLY); else args->isreadonly = LIBXFS_EXCLUSIVELY; if (!libxfs_init(args)) { /* would -d be an option? */ if (!no_modify && !dangerously) { args->isreadonly = (LIBXFS_ISINACTIVE | LIBXFS_DANGEROUSLY); if (libxfs_init(args)) fprintf(stderr, _("Unmount or use the dangerous (-d) option to repair a read-only mounted filesystem\n")); } do_error(_("couldn't initialize XFS library\n")); } ts_create(); increase_rlimit(); pftrace_init(); }
int main (int argc, char* argv[]) { /* --- main function for testing */ int d; /* delimiter of current field */ FILE *file; /* file to read */ TABSCAN *tsc; /* table scanner for testing */ char buf[256]; /* read buffer */ if (argc < 2) { /* if no arguments given, abort */ printf("usage: %s file\n", argv[0]); return 0; } file = fopen(argv[1], "rb"); /* open the input file */ if (!file) { printf("cannot open %s\n", argv[1]); return -1; } tsc = ts_create(); /* create a table scanner */ if (!tsc) { printf("not enough memory\n"); return -1; } ts_chars(tsc, TS_COMMENT, "#"); do { /* file read loop */ d = ts_next(tsc, file, buf, sizeof(buf)); printf("%d : %s\n", d, buf);/* print delimiter and field */ } while (d >= 0); /* while not at end of file */ ts_delete(tsc); /* delete the table scanner */ fclose(file); /* and close the input file */ return 0; /* return 'ok' */ } /* main() */
int main(int argc, char *argv[]) { LinkedList *ll = NULL; TreeSet *ts = NULL; char *sp; char pattern[4096]; RegExp *reg; Iterator *it; if (argc < 2) { fprintf(stderr, "Usage: ./fileCrawler pattern [dir] ...\n"); return -1; } /* * convert bash expression to regular expression and compile */ cvtPattern(pattern, argv[1]); if ((reg = re_create()) == NULL) { fprintf(stderr, "Error creating Regular Expression Instance\n"); return -1; } if (! re_compile(reg, pattern)) { char eb[4096]; re_status(reg, eb, sizeof eb); fprintf(stderr, "Compile error - pattern: `%s', error message: `%s'\n", pattern, eb); re_destroy(reg); return -1; } /* * create linked list and treeset */ if ((ll = ll_create()) == NULL) { fprintf(stderr, "Unable to create linked list\n"); goto done; } if ((ts = ts_create(scmp)) == NULL) { fprintf(stderr, "Unable to create tree set\n"); goto done; } /* * populate linked list */ if (argc == 2) { if (! processDirectory(".", ll, 1)) goto done; } else { int i; for (i = 2; i < argc; i++) { if (! processDirectory(argv[i], ll, 1)) goto done; } } /* * for each directory in the linked list, apply regular expression */ while (ll_removeFirst(ll, (void **)&sp)) { int stat = applyRe(sp, reg, ts); free(sp); if (! stat) break; } /* * create iterator to traverse files matching pattern in sorted order */ if ((it = ts_it_create(ts)) == NULL) { fprintf(stderr, "Unable to create iterator over tree set\n"); goto done; } while (it_hasNext(it)) { char *s; (void) it_next(it, (void **)&s); printf("%s\n", s); } it_destroy(it); /* * cleanup after ourselves so there are no memory leaks */ done: if (ll != NULL) ll_destroy(ll, free); if (ts != NULL) ts_destroy(ts, free); re_destroy(reg); return 0; }