Changeset 332
- Timestamp:
- 01/10/06 18:28:47
- Files:
-
- openpgpsdk/trunk/Makefile (modified) (1 diff)
- openpgpsdk/trunk/examples/packet-dump.c (modified) (4 diffs)
- openpgpsdk/trunk/include/openpgpsdk/errors.h (modified) (1 diff)
- openpgpsdk/trunk/include/openpgpsdk/util.h (modified) (1 diff)
- openpgpsdk/trunk/src/util.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
openpgpsdk/trunk/Makefile
r329 r332 35 35 tags: 36 36 rm -f TAGS 37 find . -name *.[ch]| xargs etags37 find . -name '*.[ch]' | xargs etags 38 38 39 39 test:: openpgpsdk/trunk/examples/packet-dump.c
r331 r332 871 871 fprintf(stderr,"%s [-a] [-b] <file name>\n\n",pname); 872 872 fprintf(stderr,"-a\tRead armoured data\n" 873 "-b\tDon't buffer stdout/stderr\n"); 873 "-b\tDon't buffer stdout/stderr\n" 874 "-B\tRead via a memory buffer\n"); 874 875 exit(1); 875 876 } … … 882 883 int ch; 883 884 int fd; 885 ops_boolean_t buffer_read=ops_false; 886 unsigned char buffer[10240]; 884 887 885 888 pname=argv[0]; 886 889 887 while((ch=getopt(argc,argv,"ab ")) != -1)890 while((ch=getopt(argc,argv,"abB")) != -1) 888 891 switch(ch) 889 892 { … … 895 898 setvbuf(stdout,NULL,_IONBF,0); 896 899 setvbuf(stderr,NULL,_IONBF,0); 900 break; 901 902 case 'B': 903 buffer_read=ops_true; 897 904 break; 898 905 … … 919 926 ops_parse_cb_set(pinfo,callback,NULL); 920 927 921 ops_reader_set_fd(pinfo,fd); 928 if(buffer_read) 929 { 930 int n; 931 932 n=read(fd,buffer,sizeof buffer); 933 if(n < 0) 934 { 935 perror(argv[0]); 936 exit(3); 937 } 938 ops_reader_set_memory(pinfo,buffer,n); 939 } 940 else 941 ops_reader_set_fd(pinfo,fd); 922 942 923 943 if(armour) openpgpsdk/trunk/include/openpgpsdk/errors.h
r320 r332 55 55 56 56 #define OPS_SYSTEM_ERROR_1(err,code,syscall,fmt,arg) do { ops_push_error(err,OPS_E_SYSTEM_ERROR,errno,__FILE__,__LINE__,syscall); ops_push_error(err,code,0,__FILE__,__LINE__,fmt,arg); } while(0) 57 #define OPS_ERROR(err,code,fmt) do { ops_push_error(err,code,0,__FILE__,__LINE__,fmt); } while(0) 57 58 #define OPS_ERROR_1(err,code,fmt,arg) do { ops_push_error(err,code,0,__FILE__,__LINE__,fmt,arg); } while(0) 58 59 openpgpsdk/trunk/include/openpgpsdk/util.h
r320 r332 15 15 void hexdump(const unsigned char *src,size_t length); 16 16 void ops_reader_set_fd(ops_parse_info_t *pinfo,int fd); 17 void ops_reader_set_memory(ops_parse_info_t *pinfo,const void *buffer, 18 size_t length); 17 19 18 20 /* typesafe deconstification */ openpgpsdk/trunk/src/util.c
r320 r332 160 160 } 161 161 162 typedef struct 163 { 164 const unsigned char *buffer; 165 size_t length; 166 size_t offset; 167 } reader_mem_arg_t; 168 169 static ops_reader_ret_t reader_mem(unsigned char *dest,unsigned *plength, 170 ops_reader_flags_t flags, 171 ops_error_t **errors, 172 ops_reader_info_t *rinfo, 173 ops_parse_cb_info_t *cbinfo) 174 { 175 reader_mem_arg_t *arg=ops_reader_get_arg(rinfo); 176 unsigned n; 177 178 OPS_USED(cbinfo); 179 180 if(arg->offset+*plength > arg->length) 181 n=arg->length-arg->offset; 182 else 183 n=*plength; 184 185 if(n == 0) 186 return OPS_R_EOF; 187 188 memcpy(dest,arg->buffer+arg->offset,n); 189 arg->offset+=n; 190 191 if(n != *plength) 192 { 193 if(flags&OPS_RETURN_LENGTH) 194 { 195 *plength=n; 196 return OPS_R_PARTIAL_READ; 197 } 198 else 199 { 200 OPS_ERROR(errors,OPS_E_R_EARLY_EOF,"memory block"); 201 return OPS_R_EARLY_EOF; 202 } 203 } 204 205 return OPS_R_OK; 206 } 207 208 // Note that its the caller's responsibility to ensure buffer continues to 209 // exist 210 void ops_reader_set_memory(ops_parse_info_t *pinfo,const void *buffer, 211 size_t length) 212 { 213 reader_mem_arg_t *arg=malloc(sizeof *arg); 214 215 arg->buffer=buffer; 216 arg->length=length; 217 ops_reader_set(pinfo,reader_mem,arg); 218 } 219 162 220 void *ops_mallocz(size_t n) 163 221 { … … 168 226 return m; 169 227 } 228
