Loading apps/apps.c +0 −67 Original line number Diff line number Diff line Loading @@ -2364,73 +2364,6 @@ int app_isdir(const char *name) } #endif /* app_dirname section */ /* * This exactly follows what POSIX's * dirname does, but is implemented * in a more platform independent way. * * path dirname * /usr/lib /usr * /usr/ / * usr . * / / * . . * .. . * "" . * * Note: this function also keeps the * possibility of modifying the 'path' * string same as POSIX dirname. */ static char *posix_dirname(char *path) { size_t l; char *ret = "."; l = strlen(path); if (l == 0) goto out; if (strcmp(path, ".") == 0) goto out; if (strcmp(path, "..") == 0) goto out; if (strcmp(path, "/") == 0) { ret = "/"; goto out; } if (path[l - 1] == '/') { /* /usr/ */ path[l - 1] = '\0'; } if ((ret = strrchr(path, '/')) == NULL) { /* usr */ ret = "."; } else if (ret == path) { /* /usr */ *++ret = '\0'; ret = path; } else { /* /usr/lib */ *ret = '\0'; ret = path; } out: return ret; } /* * TODO: implement app_dirname for Windows * and VMS. */ #if !defined(_WIN32) && !defined(__VMS) char *app_dirname(char *path) { return posix_dirname(path); } #endif /* raw_read|write section */ #if defined(__VMS) # include "vms_term_sock.h" Loading apps/apps.h +0 −1 Original line number Diff line number Diff line Loading @@ -611,7 +611,6 @@ void store_setup_crl_download(X509_STORE *st); int app_isdir(const char *); int app_access(const char *, int flag); char *app_dirname(char *path); int fileno_stdin(void); int fileno_stdout(void); int raw_read_stdin(void *, int); Loading apps/opt.c +5 −36 Original line number Diff line number Diff line Loading @@ -613,17 +613,13 @@ int opt_verify(int opt, X509_VERIFY_PARAM *vpm) */ int opt_next(void) { char *p, *estr; char *p; const OPTIONS *o; int ival; long lval; unsigned long ulval; ossl_intmax_t imval; ossl_uintmax_t umval; #if !defined(_WIN32) && !defined(__VMS) char *c; int oerrno; #endif /* Look at current arg; at end of the list? */ arg = NULL; Loading Loading @@ -680,13 +676,13 @@ int opt_next(void) /* Just a string. */ break; case '/': if (app_isdir(arg) > 0) if (app_isdir(arg) >= 0) break; BIO_printf(bio_err, "%s: Not a directory: %s\n", prog, arg); return -1; case '<': /* Input file. */ if (strcmp(arg, "-") == 0 || app_access(arg, R_OK) == 0) if (strcmp(arg, "-") == 0 || app_access(arg, R_OK) >= 0) break; BIO_printf(bio_err, "%s: Cannot open input file %s, %s\n", Loading @@ -694,38 +690,11 @@ int opt_next(void) return -1; case '>': /* Output file. */ #if !defined(_WIN32) && !defined(__VMS) c = OPENSSL_strdup(arg); if (c == NULL) { BIO_printf(bio_err, "%s: Memory allocation failure\n", prog); return -1; } oerrno = errno; errno = 0; if (strcmp(arg, "-") == 0 || (app_access(app_dirname(c), W_OK) == 0 && app_isdir(arg) <= 0 && (app_access(arg, W_OK) == 0 || errno == ENOENT))) { OPENSSL_free(c); if (strcmp(arg, "-") == 0 || app_access(arg, W_OK) >= 0 || errno == ENOENT) break; } OPENSSL_free(c); if (errno == 0) /* only possible if 'arg' is a directory */ estr = "is a directory"; else estr = strerror(errno); errno = oerrno; #else if (strcmp(arg, "-") == 0 || app_access(arg, W_OK) == 0 || errno == ENOENT) break; estr = strerror(errno); #endif BIO_printf(bio_err, "%s: Cannot open output file %s, %s\n", prog, arg, estr); prog, arg, strerror(errno)); return -1; case 'p': case 'n': Loading Loading
apps/apps.c +0 −67 Original line number Diff line number Diff line Loading @@ -2364,73 +2364,6 @@ int app_isdir(const char *name) } #endif /* app_dirname section */ /* * This exactly follows what POSIX's * dirname does, but is implemented * in a more platform independent way. * * path dirname * /usr/lib /usr * /usr/ / * usr . * / / * . . * .. . * "" . * * Note: this function also keeps the * possibility of modifying the 'path' * string same as POSIX dirname. */ static char *posix_dirname(char *path) { size_t l; char *ret = "."; l = strlen(path); if (l == 0) goto out; if (strcmp(path, ".") == 0) goto out; if (strcmp(path, "..") == 0) goto out; if (strcmp(path, "/") == 0) { ret = "/"; goto out; } if (path[l - 1] == '/') { /* /usr/ */ path[l - 1] = '\0'; } if ((ret = strrchr(path, '/')) == NULL) { /* usr */ ret = "."; } else if (ret == path) { /* /usr */ *++ret = '\0'; ret = path; } else { /* /usr/lib */ *ret = '\0'; ret = path; } out: return ret; } /* * TODO: implement app_dirname for Windows * and VMS. */ #if !defined(_WIN32) && !defined(__VMS) char *app_dirname(char *path) { return posix_dirname(path); } #endif /* raw_read|write section */ #if defined(__VMS) # include "vms_term_sock.h" Loading
apps/apps.h +0 −1 Original line number Diff line number Diff line Loading @@ -611,7 +611,6 @@ void store_setup_crl_download(X509_STORE *st); int app_isdir(const char *); int app_access(const char *, int flag); char *app_dirname(char *path); int fileno_stdin(void); int fileno_stdout(void); int raw_read_stdin(void *, int); Loading
apps/opt.c +5 −36 Original line number Diff line number Diff line Loading @@ -613,17 +613,13 @@ int opt_verify(int opt, X509_VERIFY_PARAM *vpm) */ int opt_next(void) { char *p, *estr; char *p; const OPTIONS *o; int ival; long lval; unsigned long ulval; ossl_intmax_t imval; ossl_uintmax_t umval; #if !defined(_WIN32) && !defined(__VMS) char *c; int oerrno; #endif /* Look at current arg; at end of the list? */ arg = NULL; Loading Loading @@ -680,13 +676,13 @@ int opt_next(void) /* Just a string. */ break; case '/': if (app_isdir(arg) > 0) if (app_isdir(arg) >= 0) break; BIO_printf(bio_err, "%s: Not a directory: %s\n", prog, arg); return -1; case '<': /* Input file. */ if (strcmp(arg, "-") == 0 || app_access(arg, R_OK) == 0) if (strcmp(arg, "-") == 0 || app_access(arg, R_OK) >= 0) break; BIO_printf(bio_err, "%s: Cannot open input file %s, %s\n", Loading @@ -694,38 +690,11 @@ int opt_next(void) return -1; case '>': /* Output file. */ #if !defined(_WIN32) && !defined(__VMS) c = OPENSSL_strdup(arg); if (c == NULL) { BIO_printf(bio_err, "%s: Memory allocation failure\n", prog); return -1; } oerrno = errno; errno = 0; if (strcmp(arg, "-") == 0 || (app_access(app_dirname(c), W_OK) == 0 && app_isdir(arg) <= 0 && (app_access(arg, W_OK) == 0 || errno == ENOENT))) { OPENSSL_free(c); if (strcmp(arg, "-") == 0 || app_access(arg, W_OK) >= 0 || errno == ENOENT) break; } OPENSSL_free(c); if (errno == 0) /* only possible if 'arg' is a directory */ estr = "is a directory"; else estr = strerror(errno); errno = oerrno; #else if (strcmp(arg, "-") == 0 || app_access(arg, W_OK) == 0 || errno == ENOENT) break; estr = strerror(errno); #endif BIO_printf(bio_err, "%s: Cannot open output file %s, %s\n", prog, arg, estr); prog, arg, strerror(errno)); return -1; case 'p': case 'n': Loading