int exec_backup(int argc, char **argv) { struct pkgdb *db = NULL; char *backup_file = NULL; bool dump = false; bool restore = false; int ch; struct option longopts[] = { { "dump", required_argument, NULL, 'd' }, { "restore", required_argument, NULL, 'r' }, { NULL, 0, NULL, 0 }, }; while ((ch = getopt_long(argc, argv, "+d:r:", longopts, NULL)) != -1) { switch (ch) { case 'd': dump = true; backup_file = optarg; break; case 'r': restore = true; backup_file = optarg; break; default: usage_backup(); return (EX_USAGE); } } argc -= optind; argv += optind; if ( dump == restore ) { usage_backup(); return (EX_USAGE); } if (pkgdb_open(&db, PKGDB_DEFAULT) != EPKG_OK) return (EX_IOERR); if (dump) { if (isatty(fileno(stdout))) printf("Dumping database:\n"); if (pkgdb_dump(db, backup_file) == EPKG_FATAL) return (EX_IOERR); } if (restore) { if (!quiet) printf("Restoring database:\n"); if (pkgdb_load(db, backup_file) == EPKG_FATAL) return (EX_IOERR); } pkgdb_close(db); return (EX_OK); }
int exec_backup(int argc, char **argv) { struct pkgdb *db = NULL; char *dest = NULL; if (argc < 2 || argc > 3 || argv[1][0] != '-') { usage_backup(); return (EX_USAGE); } if (argc == 3) dest = argv[2]; if (pkgdb_open(&db, PKGDB_DEFAULT) != EPKG_OK) return (EX_IOERR); if (argv[1][1] == 'd') { if (isatty(fileno(stdin))) printf("Dumping database...\n"); if (pkgdb_dump(db, dest) == EPKG_FATAL) return (EX_IOERR); if (isatty(fileno(stdin))) printf("done\n"); } if (argv[1][1] == 'r') { if (isatty(fileno(stdin))) printf("Restoring database...\n"); if (pkgdb_load(db, dest) == EPKG_FATAL) return (EX_IOERR); if (isatty(fileno(stdin))) printf("done\n"); } pkgdb_close(db); return (EX_OK); }