Exemplo n.º 1
0
/* Main program */
int
main(int argc, char **argv)
{
    XFILE input_file;
    afs_uint32 r;

    parse_options(argc, argv);
    initialize_acfg_error_table();
    initialize_AVds_error_table();
    initialize_rxk_error_table();
    initialize_u_error_table();
    initialize_vl_error_table();
    initialize_vols_error_table();
    initialize_xFil_error_table();
    r = xfopen(&input_file, O_RDONLY, input_path);
    if (r) {
	afs_com_err(argv0, r, "opening %s", input_path);
	exit(2);
    }

    memset(&dp, 0, sizeof(dp));
    dp.cb_error = my_error_cb;
    dp.print_flags = DSPRINT_DIR;
    if (input_file.is_seekable)
	dp.flags |= DSFLAG_SEEK;

    r = ParseDirectory(&input_file, &dp, 0, 1);
    xfclose(&input_file);

    if (verbose && error_count)
	fprintf(stderr, "*** %d errors\n", error_count);
    if (r && !quiet)
	fprintf(stderr, "*** FAILED: %s\n", afs_error_message(r));
    return 0;
}
Exemplo n.º 2
0
/* Main program */
int
main(int argc, char **argv)
{
    XFILE input_file;
    afs_uint32 r;

    parse_options(argc, argv);
    initialize_acfg_error_table();
    initialize_AVds_error_table();
    initialize_rxk_error_table();
    initialize_u_error_table();
    initialize_vl_error_table();
    initialize_vols_error_table();
    initialize_xFil_error_table();
    r = xfopen(&input_file, O_RDONLY, input_path);
    if (r) {
	afs_com_err(argv0, r, "opening %s", input_path);
	exit(2);
    }

    memset(&dp, 0, sizeof(dp));
    dp.cb_error = my_error_cb;
    if (input_file.is_seekable)
	dp.flags |= DSFLAG_SEEK;
    dirs_done = 0;

    if (!use_vnum) {
	dt_uint64 where;

	memset(&phi, 0, sizeof(phi));
	phi.p = &dp;

	if (verbose)
	    printf("* Building pathname info...\n");
	if ((r = xftell(&input_file, &where))
	    || (r = Path_PreScan(&input_file, &phi, 1))
	    || (r = xfseek(&input_file, &where))) {
	    afs_com_err(argv0, r, "- path initialization failed");
	    xfclose(&input_file);
	    exit(1);
	}
    }

    dp.cb_vnode_dir = directory_cb;
    dp.cb_vnode_file = file_cb;
    dp.cb_vnode_link = symlink_cb;
    dp.cb_vnode_empty = lose_cb;
    dp.cb_vnode_wierd = lose_cb;
    if (do_headers) {
	dp.cb_dumphdr = dumphdr_cb;
	dp.cb_volhdr = volhdr_cb;
    }

    if (!nomode) {
	mkdir(target, 0755);
	if (chdir(target)) {
	    fprintf(stderr, "chdir %s failed: %s\n", target, strerror(errno));
	    exit(1);
	}
    }
    r = ParseDumpFile(&input_file, &dp);

    if (verbose && error_count)
	fprintf(stderr, "*** %d errors\n", error_count);
    if (r && !quiet)
	fprintf(stderr, "*** FAILED: %s\n", afs_error_message(r));
    exit(0);
}
Exemplo n.º 3
0
/* Main program */
int main(int argc, char **argv)
{
  XFILE input_file;
  afs_uint32 r;

  parse_options(argc, argv);
  initialize_acfg_error_table();
  initialize_AVds_error_table();
  initialize_rxk_error_table();
  initialize_u_error_table();
  initialize_vl_error_table();
  initialize_vols_error_table();
  initialize_xFil_error_table();
  r = xfopen(&input_file, O_RDONLY, input_path);
  if (r) {
    com_err(argv0, r, "opening %s", input_path);
    exit(2);
  }

  memset(&dp, 0, sizeof(dp));
  dp.cb_error     = my_error_cb;
  dp.repair_flags = repairflags;
  if (input_file.is_seekable) dp.flags |= DSFLAG_SEEK;
  else {
    if (repairflags)
      fprintf(stderr, "Repair modes available only for seekable dumps\n");
    if (printflags & DSPRINT_PATH)
      fprintf(stderr, "Path-printing available only for seekable dumps\n");
    if (repairflags || (printflags & DSPRINT_PATH))
      exit(1);
  }

  if (gendump_path && (r = setup_repair())) {
    com_err(argv0, r, "setting up repair output");
    xfclose(&input_file);
    exit(2);
  }

  if (printflags & DSPRINT_PATH) {
    u_int64 where;

    dp.print_flags = printflags & DSPRINT_DEBUG;
    memset(&phi, 0, sizeof(phi));
    phi.p = &dp;

    if ((r = xftell(&input_file, &where))
    ||  (r = Path_PreScan(&input_file, &phi, 0))
    ||  (r = xfseek(&input_file, &where))) {
      com_err(argv0, r, "- path initialization failed");
      xfclose(&input_file);
      exit(2);
    }

    dp.cb_vnode_dir   = print_vnode_path;
    dp.cb_vnode_file  = print_vnode_path;
    dp.cb_vnode_link  = print_vnode_path;
    dp.cb_vnode_empty = print_vnode_path;
    dp.cb_vnode_wierd = print_vnode_path;
  }

  dp.print_flags  = printflags;
  r = ParseDumpFile(&input_file, &dp);
  xfclose(&input_file);
  if (gendump_path) {
    if (!r) r = DumpDumpEnd(&repair_output);
    if (!r) r = xfclose(&repair_output);
    else xfclose(&repair_output);
  }

  if (verbose && error_count) fprintf(stderr, "*** %d errors\n", error_count);
  if (r && !quiet) fprintf(stderr, "*** FAILED: %s\n", error_message(r));
  exit(0);
}