diff options
| author | djm <> | 2011-11-03 02:32:21 +0000 |
|---|---|---|
| committer | djm <> | 2011-11-03 02:32:21 +0000 |
| commit | 217868ba06006584e019bb825f91c811747a4cba (patch) | |
| tree | 79374ba6e81c08ba6e78220557d6f6e9ca03f7b7 /src/lib/libcrypto/LPdir_vms.c | |
| parent | 2dd8058114e20f1cd7c897166a4ce75ed390ee54 (diff) | |
| download | openbsd-217868ba06006584e019bb825f91c811747a4cba.tar.gz openbsd-217868ba06006584e019bb825f91c811747a4cba.tar.bz2 openbsd-217868ba06006584e019bb825f91c811747a4cba.zip | |
import OpenSSL 1.0.0e
Diffstat (limited to 'src/lib/libcrypto/LPdir_vms.c')
| -rw-r--r-- | src/lib/libcrypto/LPdir_vms.c | 49 |
1 files changed, 28 insertions, 21 deletions
diff --git a/src/lib/libcrypto/LPdir_vms.c b/src/lib/libcrypto/LPdir_vms.c index 85b427a623..7613bd254e 100644 --- a/src/lib/libcrypto/LPdir_vms.c +++ b/src/lib/libcrypto/LPdir_vms.c | |||
| @@ -40,22 +40,18 @@ | |||
| 40 | #ifndef LPDIR_H | 40 | #ifndef LPDIR_H |
| 41 | #include "LPdir.h" | 41 | #include "LPdir.h" |
| 42 | #endif | 42 | #endif |
| 43 | #include "vms_rms.h" | ||
| 43 | 44 | ||
| 44 | /* Because some compiler options hide this macor */ | 45 | /* Some compiler options hide EVMSERR. */ |
| 45 | #ifndef EVMSERR | 46 | #ifndef EVMSERR |
| 46 | #define EVMSERR 65535 /* error for non-translatable VMS errors */ | 47 | # define EVMSERR 65535 /* error for non-translatable VMS errors */ |
| 47 | #endif | 48 | #endif |
| 48 | 49 | ||
| 49 | struct LP_dir_context_st | 50 | struct LP_dir_context_st |
| 50 | { | 51 | { |
| 51 | unsigned long VMS_context; | 52 | unsigned long VMS_context; |
| 52 | #ifdef NAML$C_MAXRSS | 53 | char filespec[ NAMX_MAXRSS+ 1]; |
| 53 | char filespec[NAML$C_MAXRSS+1]; | 54 | char result[ NAMX_MAXRSS+ 1]; |
| 54 | char result[NAML$C_MAXRSS+1]; | ||
| 55 | #else | ||
| 56 | char filespec[256]; | ||
| 57 | char result[256]; | ||
| 58 | #endif | ||
| 59 | struct dsc$descriptor_d filespec_dsc; | 55 | struct dsc$descriptor_d filespec_dsc; |
| 60 | struct dsc$descriptor_d result_dsc; | 56 | struct dsc$descriptor_d result_dsc; |
| 61 | }; | 57 | }; |
| @@ -66,6 +62,16 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory) | |||
| 66 | char *p, *r; | 62 | char *p, *r; |
| 67 | size_t l; | 63 | size_t l; |
| 68 | unsigned long flags = 0; | 64 | unsigned long flags = 0; |
| 65 | |||
| 66 | /* Arrange 32-bit pointer to (copied) string storage, if needed. */ | ||
| 67 | #if __INITIAL_POINTER_SIZE == 64 | ||
| 68 | # pragma pointer_size save | ||
| 69 | # pragma pointer_size 32 | ||
| 70 | char *ctx_filespec_32p; | ||
| 71 | # pragma pointer_size restore | ||
| 72 | char ctx_filespec_32[ NAMX_MAXRSS+ 1]; | ||
| 73 | #endif /* __INITIAL_POINTER_SIZE == 64 */ | ||
| 74 | |||
| 69 | #ifdef NAML$C_MAXRSS | 75 | #ifdef NAML$C_MAXRSS |
| 70 | flags |= LIB$M_FIL_LONG_NAMES; | 76 | flags |= LIB$M_FIL_LONG_NAMES; |
| 71 | #endif | 77 | #endif |
| @@ -93,13 +99,7 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory) | |||
| 93 | 99 | ||
| 94 | filespeclen += 4; /* "*.*;" */ | 100 | filespeclen += 4; /* "*.*;" */ |
| 95 | 101 | ||
| 96 | if (filespeclen > | 102 | if (filespeclen > NAMX_MAXRSS) |
| 97 | #ifdef NAML$C_MAXRSS | ||
| 98 | NAML$C_MAXRSS | ||
| 99 | #else | ||
| 100 | 255 | ||
| 101 | #endif | ||
| 102 | ) | ||
| 103 | { | 103 | { |
| 104 | errno = ENAMETOOLONG; | 104 | errno = ENAMETOOLONG; |
| 105 | return 0; | 105 | return 0; |
| @@ -115,14 +115,21 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory) | |||
| 115 | 115 | ||
| 116 | strcpy((*ctx)->filespec,directory); | 116 | strcpy((*ctx)->filespec,directory); |
| 117 | strcat((*ctx)->filespec,"*.*;"); | 117 | strcat((*ctx)->filespec,"*.*;"); |
| 118 | |||
| 119 | /* Arrange 32-bit pointer to (copied) string storage, if needed. */ | ||
| 120 | #if __INITIAL_POINTER_SIZE == 64 | ||
| 121 | # define CTX_FILESPEC ctx_filespec_32p | ||
| 122 | /* Copy the file name to storage with a 32-bit pointer. */ | ||
| 123 | ctx_filespec_32p = ctx_filespec_32; | ||
| 124 | strcpy( ctx_filespec_32p, (*ctx)->filespec); | ||
| 125 | #else /* __INITIAL_POINTER_SIZE == 64 */ | ||
| 126 | # define CTX_FILESPEC (*ctx)->filespec | ||
| 127 | #endif /* __INITIAL_POINTER_SIZE == 64 [else] */ | ||
| 128 | |||
| 118 | (*ctx)->filespec_dsc.dsc$w_length = filespeclen; | 129 | (*ctx)->filespec_dsc.dsc$w_length = filespeclen; |
| 119 | (*ctx)->filespec_dsc.dsc$b_dtype = DSC$K_DTYPE_T; | 130 | (*ctx)->filespec_dsc.dsc$b_dtype = DSC$K_DTYPE_T; |
| 120 | (*ctx)->filespec_dsc.dsc$b_class = DSC$K_CLASS_S; | 131 | (*ctx)->filespec_dsc.dsc$b_class = DSC$K_CLASS_S; |
| 121 | (*ctx)->filespec_dsc.dsc$a_pointer = (*ctx)->filespec; | 132 | (*ctx)->filespec_dsc.dsc$a_pointer = CTX_FILESPEC; |
| 122 | (*ctx)->result_dsc.dsc$w_length = 0; | ||
| 123 | (*ctx)->result_dsc.dsc$b_dtype = DSC$K_DTYPE_T; | ||
| 124 | (*ctx)->result_dsc.dsc$b_class = DSC$K_CLASS_D; | ||
| 125 | (*ctx)->result_dsc.dsc$a_pointer = 0; | ||
| 126 | } | 133 | } |
| 127 | 134 | ||
| 128 | (*ctx)->result_dsc.dsc$w_length = 0; | 135 | (*ctx)->result_dsc.dsc$w_length = 0; |
