Doxygen Source Code Documentation
thd_compress.c File Reference
#include "thd_compress.h"#include "Amalloc.h"Go to the source code of this file.
Defines | |
| #define | NFOPMAX 16 |
Functions | |
| int | COMPRESS_is_file (char *pathname) |
| int | COMPRESS_has_suffix (char *fname, int mode) |
| int | COMPRESS_filecode (char *fname) |
| void | putin_fop_table (FILE *fp, int ppp) |
| int | COMPRESS_fclose (FILE *fp) |
| char * | COMPRESS_filename (char *fname) |
| char * | COMPRESS_add_suffix (char *fname, int mm) |
| FILE * | COMPRESS_fopen_read (char *fname) |
| FILE * | COMPRESS_fopen_write (char *fname, int mm) |
| int | COMPRESS_unlink (char *fname) |
Variables | |
| int | fop_init = 0 |
| int | fop_fileno [NFOPMAX] |
| int | fop_popend [NFOPMAX] |
Define Documentation
|
|
add the suffixes to the name, and check again * Definition at line 78 of file thd_compress.c. Referenced by COMPRESS_fclose(), and putin_fop_table(). |
Function Documentation
|
||||||||||||
|
Definition at line 165 of file thd_compress.c. References AFMALL, COMPRESS_has_suffix(), and COMPRESS_LASTCODE. Referenced by RENAME_main().
00166 {
00167 char * buf ;
00168 int ll ;
00169
00170 if( fname == NULL || fname[0] == '\0' ) return NULL ;
00171
00172 ll = strlen(fname) ;
00173 buf = AFMALL(char, sizeof(char) * (ll+16) ) ;
00174
00175 strcpy(buf,fname) ;
00176 if( mm >= 0 && mm <= COMPRESS_LASTCODE &&
00177 ! COMPRESS_has_suffix(fname,mm) ){
00178
00179 strcat(buf,COMPRESS_suffix[mm]) ;
00180 }
00181
00182 return buf ;
00183 }
|
|
|
Definition at line 113 of file thd_compress.c. References fop_fileno, fop_init, fop_popend, NFOPMAX, and pclose. Referenced by adwarp_refashion_dataset(), AFNI_refashion_dataset(), main(), THD_load_datablock(), and THD_write_datablock().
00114 {
00115 int fn , ii ;
00116
00117 if( fp == NULL || ! fop_init ) return fclose(fp) ;
00118
00119 fn = fileno(fp) ;
00120 for( ii=0 ; ii < NFOPMAX ; ii++ ){ /* find the file number */
00121 if( fop_fileno[ii] == fn ){ /* found it! */
00122 fop_fileno[ii] = -1 ; /* empty this table entry */
00123 if( fop_popend[ii] ) return pclose(fp) ;
00124 else return fclose(fp) ;
00125 }
00126 }
00127
00128 return fclose(fp) ; /* couldn't find it, so use fclose */
00129 }
|
|
|
Definition at line 46 of file thd_compress.c. References AFMALL, COMPRESS_has_suffix(), COMPRESS_is_file(), COMPRESS_LASTCODE, COMPRESS_NOFILE, COMPRESS_NONE, and free. Referenced by COMPRESS_filename(), COMPRESS_fopen_read(), main(), RENAME_main(), THD_datablock_from_atr(), THD_force_malloc_type(), and THD_rename_dataset_files().
00047 {
00048 int ii ;
00049 char * buf ;
00050
00051 if( fname == NULL || fname[0] == '\0' ) return COMPRESS_NOFILE ;
00052
00053 /** check the filename suffix **/
00054
00055 for( ii=0 ; ii <= COMPRESS_LASTCODE ; ii++ ){
00056 if( COMPRESS_has_suffix(fname,ii) ){
00057 if( COMPRESS_is_file(fname) ) return ii ;
00058 else return COMPRESS_NOFILE ;
00059 }
00060 }
00061 if( COMPRESS_is_file(fname) ) return COMPRESS_NONE ;
00062
00063 /** add the suffixes to the name, and check again **/
00064
00065 buf = AFMALL(char, sizeof(char) * (strlen(fname)+16) ) ;
00066 for( ii=0 ; ii <= COMPRESS_LASTCODE ; ii++ ){
00067 strcpy(buf,fname) ; strcat(buf,COMPRESS_suffix[ii]) ;
00068 if( COMPRESS_is_file(buf) ){ free(buf) ; return ii ; }
00069 }
00070 free(buf) ; return COMPRESS_NOFILE ;
00071 }
|
|
|
Definition at line 138 of file thd_compress.c. References AFMALL, COMPRESS_filecode(), COMPRESS_has_suffix(), COMPRESS_NOFILE, and COMPRESS_NONE. Referenced by COMPRESS_unlink(), main(), and THD_rename_dataset_files().
00139 {
00140 char * buf ;
00141 int ll , mm ;
00142
00143 if( fname == NULL || fname[0] == '\0' ) return NULL ;
00144
00145 mm = COMPRESS_filecode( fname ) ; /* find compression mode */
00146 if( mm == COMPRESS_NOFILE ) return NULL ;
00147
00148 ll = strlen(fname) ;
00149 buf = AFMALL(char, sizeof(char) * (ll+16) ) ; /* worst case */
00150
00151 if( mm == COMPRESS_NONE ){
00152 strcpy(buf,fname) ;
00153 } else {
00154 if( ! COMPRESS_has_suffix(fname,mm) ){
00155 strcpy(buf,fname) ; strcat(buf,COMPRESS_suffix[mm]) ;
00156 } else {
00157 strcpy(buf,fname) ;
00158 }
00159 }
00160 return buf ;
00161 }
|
|
|
Definition at line 189 of file thd_compress.c. References AFMALL, COMPRESS_filecode(), COMPRESS_has_suffix(), COMPRESS_NOFILE, COMPRESS_NONE, free, popen, and putin_fop_table(). Referenced by THD_load_datablock().
00190 {
00191 FILE * fp ;
00192 int mm ;
00193 char * buf , * cmd ;
00194
00195 if( fname == NULL || fname[0] == '\0' ) return NULL ;
00196
00197 mm = COMPRESS_filecode( fname ) ; /* find compression mode */
00198
00199 if( mm == COMPRESS_NOFILE ) return NULL ; /* can't do nothin */
00200
00201 if( mm == COMPRESS_NONE ){
00202 fp = fopen(fname,"r") ; /* open it normally */
00203 putin_fop_table(fp,0) ; /* save its open method */
00204 return fp ;
00205 }
00206
00207 #if 1
00208 if( ! COMPRESS_has_suffix(fname,mm) ){
00209 buf = AFMALL(char, sizeof(char) * (strlen(fname)+16) ) ;
00210 strcpy(buf,fname) ; strcat(buf,COMPRESS_suffix[mm]) ;
00211 } else {
00212 buf = fname ;
00213 }
00214 #else
00215 buf = fname ;
00216 #endif
00217
00218 cmd = AFMALL(char, sizeof(char) * (strlen(buf)+32) ) ;
00219 sprintf(cmd,COMPRESS_unprogram[mm],buf) ;
00220
00221 fp = popen(cmd,"r") ; /* open a pipe to read the file */
00222 putin_fop_table(fp,1) ; /* save its open method */
00223
00224 free(cmd) ; if( buf != fname ) free(buf) ;
00225 return fp ;
00226 }
|
|
||||||||||||
|
Definition at line 234 of file thd_compress.c. References AFMALL, COMPRESS_has_suffix(), free, popen, and putin_fop_table(). Referenced by adwarp_refashion_dataset(), AFNI_refashion_dataset(), main(), and THD_write_datablock().
00235 {
00236 FILE * fp ;
00237 char * buf , * cmd ;
00238
00239 if( fname == NULL || fname[0] == '\0' ) return NULL ;
00240
00241 /* Don't compress if the compression program isn't marked as OK */
00242 /* [For modes that can only be compressed offline, like BRIKCOMP] */
00243
00244 if( mm < 0 || ! COMPRESS_program_ok[mm] ){
00245 fp = fopen(fname,"w") ; /* open it normally */
00246 putin_fop_table(fp,0) ; /* save its open method */
00247 return fp ;
00248 }
00249
00250 #if 1
00251 if( ! COMPRESS_has_suffix(fname,mm) ){
00252 buf = AFMALL(char, sizeof(char) * (strlen(fname)+16) ) ;
00253 strcpy(buf,fname) ; strcat(buf,COMPRESS_suffix[mm]) ;
00254 } else {
00255 buf = fname ;
00256 }
00257 #else
00258 buf = fname ;
00259 #endif
00260
00261 cmd = AFMALL(char, sizeof(char) * (strlen(buf)+32) ) ;
00262 sprintf(cmd,COMPRESS_program[mm],buf) ;
00263
00264 fp = popen(cmd,"w") ; /* open a pipe to write the file */
00265 putin_fop_table(fp,1) ; /* save its open method */
00266
00267 free(cmd) ; if( buf != fname ) free(buf) ;
00268 return fp ;
00269 }
|
|
||||||||||||
|
Definition at line 28 of file thd_compress.c. References COMPRESS_LASTCODE. Referenced by COMPRESS_add_suffix(), COMPRESS_filecode(), COMPRESS_filename(), COMPRESS_fopen_read(), and COMPRESS_fopen_write().
00029 {
00030 int ll ;
00031
00032 if( mode < 0 ) return 1 ;
00033 if( mode > COMPRESS_LASTCODE ) return 0 ;
00034
00035 ll = strlen(fname) ;
00036 return ( ll > COMPRESS_suffix_len[mode] &&
00037 strcmp(COMPRESS_suffix[mode] ,
00038 fname+(ll-COMPRESS_suffix_len[mode])) == 0 ) ;
00039 }
|
|
|
Definition at line 13 of file thd_compress.c. Referenced by COMPRESS_filecode().
00014 {
00015 static struct stat buf ;
00016 int ii ;
00017
00018 if( pathname == NULL ) return 0 ;
00019 ii = stat( pathname , &buf ) ; if( ii != 0 ) return 0 ;
00020 ii = (buf.st_mode & S_IFREG) != 0 ; return ii ;
00021 }
|
|
|
Definition at line 273 of file thd_compress.c. References COMPRESS_filename(), free, and unlink. Referenced by adwarp_refashion_dataset(), AFNI_refashion_dataset(), THD_delete_3dim_dataset(), THD_open_3dcalc(), and THD_write_datablock().
00274 {
00275 char * fff = COMPRESS_filename(fname) ;
00276 int ii = -1 ;
00277 if( fff != NULL ){ ii=unlink(fff); free(fff); }
00278 return ii ;
00279 }
|
|
||||||||||||
|
Definition at line 83 of file thd_compress.c. References fop_fileno, fop_init, fop_popend, and NFOPMAX. Referenced by COMPRESS_fopen_read(), and COMPRESS_fopen_write().
00084 {
00085 int ii ;
00086
00087 if( fp == NULL ) return ; /* can't do much with nothing */
00088
00089 if( ! fop_init ){ /* initialize the table */
00090 for( ii=0 ; ii < NFOPMAX ; ii++ ){
00091 fop_fileno[ii] = -1 ;
00092 fop_popend[ii] = 0 ;
00093 }
00094 fop_init = 1 ;
00095 }
00096
00097 for( ii=0 ; ii < NFOPMAX ; ii++ ) /* find an unused entry */
00098 if( fop_fileno[ii] < 0 ) break ;
00099
00100 if( ii == NFOPMAX ){
00101 fprintf(stderr,"\n*** AFNI compressor table overflow!\n") ;
00102 return ;
00103 }
00104
00105 fop_fileno[ii] = fileno(fp) ; /* save the file number */
00106 fop_popend[ii] = ppp ; /* save the popen code */
00107 return ;
00108 }
|
Variable Documentation
|
|
Definition at line 80 of file thd_compress.c. Referenced by COMPRESS_fclose(), and putin_fop_table(). |
|
|
Definition at line 79 of file thd_compress.c. Referenced by COMPRESS_fclose(), and putin_fop_table(). |
|
|
Definition at line 81 of file thd_compress.c. Referenced by COMPRESS_fclose(), and putin_fop_table(). |