/* set the option */ static int setoption(netpgp_t *netpgp, prog_t *p, int val, char *arg, int *homeset) { switch (val) { case COREDUMPS: netpgp_setvar(netpgp, "coredumps", "allowed"); break; case GENERATE_KEY: netpgp_setvar(netpgp, "userid checks", "skip"); p->cmd = val; break; case LIST_KEYS: case LIST_SIGS: case FIND_KEY: case EXPORT_KEY: case IMPORT_KEY: case GET_KEY: case HELP_CMD: p->cmd = val; break; case VERSION_CMD: printf( "%s\nAll bug reports, praise and chocolate, please, to:\n%s\n", netpgp_get_info("version"), netpgp_get_info("maintainer")); exit(EXIT_SUCCESS); /* options */ case SSHKEYS: netpgp_setvar(netpgp, "ssh keys", "1"); break; case KEYRING: if (arg == NULL) { (void) fprintf(stderr, "No keyring argument provided\n"); exit(EXIT_ERROR); } snprintf(p->keyring, sizeof(p->keyring), "%s", arg); break; case USERID: if (optarg == NULL) { (void) fprintf(stderr, "no userid argument provided\n"); exit(EXIT_ERROR); } netpgp_setvar(netpgp, "userid", arg); break; case VERBOSE: netpgp_incvar(netpgp, "verbose", 1); break; case HOMEDIR: if (arg == NULL) { (void) fprintf(stderr, "no home directory argument provided\n"); exit(EXIT_ERROR); } netpgp_set_homedir(netpgp, arg, NULL, 0); *homeset = 1; break; case NUMBITS: if (arg == NULL) { (void) fprintf(stderr, "no number of bits argument provided\n"); exit(EXIT_ERROR); } p->numbits = atoi(arg); break; case HASH_ALG: if (arg == NULL) { (void) fprintf(stderr, "No hash algorithm argument provided\n"); exit(EXIT_ERROR); } netpgp_setvar(netpgp, "hash", arg); break; case PASSWDFD: if (arg == NULL) { (void) fprintf(stderr, "no pass-fd argument provided\n"); exit(EXIT_ERROR); } netpgp_setvar(netpgp, "pass-fd", arg); break; case RESULTS: if (arg == NULL) { (void) fprintf(stderr, "No output filename argument provided\n"); exit(EXIT_ERROR); } netpgp_setvar(netpgp, "res", arg); break; case SSHKEYFILE: netpgp_setvar(netpgp, "ssh keys", "1"); netpgp_setvar(netpgp, "sshkeyfile", arg); break; case FORMAT: netpgp_setvar(netpgp, "format", arg); break; case CIPHER: netpgp_setvar(netpgp, "cipher", arg); break; case OPS_DEBUG: netpgp_set_debug(arg); break; default: p->cmd = HELP_CMD; break; } return 1; }
/* set an option */ static int setoption(netpgp_t *netpgp, prog_t *p, int val, char *arg, int *homeset) { switch (val) { case COREDUMPS: netpgp_setvar(netpgp, "coredumps", "allowed"); break; case ENCRYPT: /* for encryption, we need a userid */ netpgp_setvar(netpgp, "need userid", "1"); p->cmd = val; break; case SIGN: case CLEARSIGN: /* for signing, we need a userid and a seckey */ netpgp_setvar(netpgp, "need seckey", "1"); netpgp_setvar(netpgp, "need userid", "1"); p->cmd = val; break; case DECRYPT: /* for decryption, we need a seckey */ netpgp_setvar(netpgp, "need seckey", "1"); p->cmd = val; break; case VERIFY: case VERIFY_CAT: case LIST_PACKETS: case SHOW_KEYS: case HELP_CMD: p->cmd = val; break; case VERSION_CMD: printf( "%s\nAll bug reports, praise and chocolate, please, to:\n%s\n", netpgp_get_info("version"), netpgp_get_info("maintainer")); exit(EXIT_SUCCESS); /* options */ case SSHKEYS: netpgp_setvar(netpgp, "ssh keys", "1"); break; case KEYRING: if (arg == NULL) { (void) fprintf(stderr, "No keyring argument provided\n"); exit(EXIT_ERROR); } snprintf(p->keyring, sizeof(p->keyring), "%s", arg); break; case USERID: if (arg == NULL) { (void) fprintf(stderr, "No userid argument provided\n"); exit(EXIT_ERROR); } netpgp_setvar(netpgp, "userid", arg); break; case ARMOUR: p->armour = 1; break; case DETACHED: p->detached = 1; break; case VERBOSE: netpgp_incvar(netpgp, "verbose", 1); break; case HOMEDIR: if (arg == NULL) { (void) fprintf(stderr, "No home directory argument provided\n"); exit(EXIT_ERROR); } netpgp_set_homedir(netpgp, arg, NULL, 0); *homeset = 1; break; case HASH_ALG: if (arg == NULL) { (void) fprintf(stderr, "No hash algorithm argument provided\n"); exit(EXIT_ERROR); } netpgp_setvar(netpgp, "hash", arg); break; case PASSWDFD: if (arg == NULL) { (void) fprintf(stderr, "No pass-fd argument provided\n"); exit(EXIT_ERROR); } netpgp_setvar(netpgp, "pass-fd", arg); break; case OUTPUT: if (arg == NULL) { (void) fprintf(stderr, "No output filename argument provided\n"); exit(EXIT_ERROR); } if (p->output) { (void) free(p->output); } p->output = strdup(arg); break; case RESULTS: if (arg == NULL) { (void) fprintf(stderr, "No output filename argument provided\n"); exit(EXIT_ERROR); } netpgp_setvar(netpgp, "results", arg); break; case SSHKEYFILE: netpgp_setvar(netpgp, "ssh keys", "1"); netpgp_setvar(netpgp, "sshkeyfile", arg); break; case MAX_MEM_ALLOC: netpgp_setvar(netpgp, "max mem alloc", arg); break; case DURATION: netpgp_setvar(netpgp, "duration", arg); break; case BIRTHTIME: netpgp_setvar(netpgp, "birthtime", arg); break; case CIPHER: netpgp_setvar(netpgp, "cipher", arg); break; case NUMTRIES: netpgp_setvar(netpgp, "numtries", arg); break; case OPS_DEBUG: netpgp_set_debug(arg); break; default: p->cmd = HELP_CMD; break; } return 1; }