Changeset 4010 for zzuf/trunk


Ignore:
Timestamp:
Nov 23, 2009, 1:26:59 AM (10 years ago)
Author:
Sam Hocevar
Message:

Minor refactoring in zzcat.

Location:
zzuf/trunk/test
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • zzuf/trunk/test/check-utils

    r4007 r4010  
    2121            check "$ZZOPTS" "< $file" "zzuf"
    2222        fi
    23         for n in 100 \
    24                  200 201 202 203 204 205 206 207 208 \
    25                  300 301 302 303 304 305 306 307 \
     23        for n in 100 101 102 \
     24                 200 201 202 203 204 205 206 207 208 209 210 211 212 \
     25                 300 301 302 303 304 305 306 307 308 309 310 311 \
    2626                 400 \
    2727                 500 \
  • zzuf/trunk/test/zzcat.c

    r4007 r4010  
    3838#include <string.h>
    3939
    40 static int zzcat_read(char const *, unsigned char *, int64_t);
     40static int zzcat_read(char const *, unsigned char *, int64_t, int64_t);
    4141static int zzcat_fread(char const *, unsigned char *, int64_t);
    42 static int zzcat_getc(char const *, unsigned char *, int64_t, int);
    4342#if defined HAVE_GETLINE
    44 static int zzcat_getdelim_getc(char const *, unsigned char *, int64_t, int);
    45 #endif
    46 static int zzcat_fseek_getc(char const *, unsigned char *, int64_t, int);
    47 static int zzcat_fread_getc(char const *, unsigned char *, int64_t, int);
     43static int zzcat_getline_getc(char const *, unsigned char *, int64_t, int);
     44#endif
     45static int zzcat_fseek_getc(char const *, unsigned char *,
     46                            int64_t, int64_t, int);
     47static int zzcat_fread_getc(char const *, unsigned char *, int64_t,
     48                            int64_t, int);
    4849static int zzcat_random_socket(char const *, unsigned char *, int64_t);
    4950static int zzcat_random_stream(char const *, unsigned char *, int64_t);
     
    103104    {
    104105        /* Simple socket calls */
    105         case 100: ret = zzcat_read(name, data, len); break;
     106        case 100: ret = zzcat_read(name, data, len, 1); break;
     107        case 101: ret = zzcat_read(name, data, len, 3); break;
     108        case 102: ret = zzcat_read(name, data, len, len); break;
    106109        /* Simple stream calls */
    107110        case 200: ret = zzcat_fread(name, data, len); break;
    108         case 201: ret = zzcat_getc(name, data, len, 0); break;
    109         case 202: ret = zzcat_getc(name, data, len, 1); break;
    110         case 203: ret = zzcat_fseek_getc(name, data, len, 0); break;
    111         case 204: ret = zzcat_fseek_getc(name, data, len, 1); break;
    112         case 205: ret = zzcat_fread_getc(name, data, len, 0); break;
    113         case 206: ret = zzcat_fread_getc(name, data, len, 1); break;
     111        case 201: ret = zzcat_fseek_getc(name, data, len, 0, 0); break;
     112        case 202: ret = zzcat_fseek_getc(name, data, len, 0, 1); break;
     113        case 203: ret = zzcat_fseek_getc(name, data, len, 2, 0); break;
     114        case 204: ret = zzcat_fseek_getc(name, data, len, 2, 1); break;
     115        case 205: ret = zzcat_fseek_getc(name, data, len, len / 2, 0); break;
     116        case 206: ret = zzcat_fseek_getc(name, data, len, len / 2, 1); break;
     117        case 207: ret = zzcat_fread_getc(name, data, len, 2, 0); break;
     118        case 208: ret = zzcat_fread_getc(name, data, len, 2, 1); break;
     119        case 209: ret = zzcat_fread_getc(name, data, len, len / 2, 0); break;
     120        case 210: ret = zzcat_fread_getc(name, data, len, len / 2, 1); break;
    114121#if defined HAVE_GETLINE
    115         case 207: ret = zzcat_getdelim_getc(name, data, len, 0); break;
    116         case 208: ret = zzcat_getdelim_getc(name, data, len, 1); break;
     122        case 211: ret = zzcat_getline_getc(name, data, len, 0); break;
     123        case 212: ret = zzcat_getline_getc(name, data, len, 1); break;
    117124#endif
    118125        /* Simple unlocked stream calls */
    119126#if defined HAVE_GETC_UNLOCKED
    120         case 300: ret = zzcat_getc(name, data, len, 2); break;
    121         case 301: ret = zzcat_getc(name, data, len, 3); break;
    122         case 302: ret = zzcat_fseek_getc(name, data, len, 2); break;
    123         case 303: ret = zzcat_fseek_getc(name, data, len, 3); break;
    124         case 304: ret = zzcat_fread_getc(name, data, len, 2); break;
    125         case 305: ret = zzcat_fread_getc(name, data, len, 3); break;
     127        case 300: ret = zzcat_fseek_getc(name, data, len, 0, 2); break;
     128        case 301: ret = zzcat_fseek_getc(name, data, len, 0, 3); break;
     129        case 302: ret = zzcat_fseek_getc(name, data, len, 2, 2); break;
     130        case 303: ret = zzcat_fseek_getc(name, data, len, 2, 3); break;
     131        case 304: ret = zzcat_fseek_getc(name, data, len, len / 2, 2); break;
     132        case 305: ret = zzcat_fseek_getc(name, data, len, len / 2, 3); break;
     133        case 306: ret = zzcat_fread_getc(name, data, len, 2, 2); break;
     134        case 307: ret = zzcat_fread_getc(name, data, len, 2, 3); break;
     135        case 308: ret = zzcat_fread_getc(name, data, len, len / 2, 2); break;
     136        case 309: ret = zzcat_fread_getc(name, data, len, len / 2, 3); break;
    126137#   if defined HAVE_GETLINE
    127         case 306: ret = zzcat_getdelim_getc(name, data, len, 2); break;
    128         case 307: ret = zzcat_getdelim_getc(name, data, len, 3); break;
     138        case 310: ret = zzcat_getline_getc(name, data, len, 2); break;
     139        case 311: ret = zzcat_getline_getc(name, data, len, 3); break;
    129140#   endif
    130141#endif
     
    147158}
    148159
    149 /* Only read(1) calls */
    150 static int zzcat_read(char const *name, unsigned char *data, int64_t len)
     160/* Only read() calls */
     161static int zzcat_read(char const *name, unsigned char *data, int64_t len,
     162                      int64_t chunk)
    151163{
    152164    int i, fd = open(name, O_RDONLY);
    153165    if(fd < 0)
    154166        return EXIT_FAILURE;
    155     for(i = 0; i < len; i++)
    156         read(fd, data + i, 1);
     167    for(i = 0; i < len; i += chunk)
     168        read(fd, data + i, chunk);
    157169    close(fd);
    158170    return EXIT_SUCCESS;
     
    172184}
    173185
    174 /* Only getc() or fgetc() calls */
    175 static int zzcat_getc(char const *name, unsigned char *data, int64_t len,
    176                       int getc_method)
    177 {
    178     FILE *stream = fopen(name, "r");
    179     int i;
    180     if(!stream)
    181         return EXIT_FAILURE;
    182     for(i = 0; i < len; i++)
    183         data[i] = mygetc(stream, getc_method);
    184     fclose(stream);
    185     return EXIT_SUCCESS;
    186 }
    187 
    188186#if defined HAVE_GETLINE
    189187/* getdelim() and getc() calls */
    190 static int zzcat_getdelim_getc(char const *name, unsigned char *data,
    191                                int64_t len, int getc_method)
     188static int zzcat_getline_getc(char const *name, unsigned char *data,
     189                              int64_t len, int getc_method)
    192190{
    193191    FILE *stream = fopen(name, "r");
     
    216214/* One fseek(), then only getc() or fgetc() calls */
    217215static int zzcat_fseek_getc(char const *name, unsigned char *data,
    218                             int64_t len, int getc_method)
     216                            int64_t len, int64_t chunk, int getc_method)
    219217{
    220218    FILE *stream = fopen(name, "r");
     
    222220    if(!stream)
    223221        return EXIT_FAILURE;
    224     fseek(stream, len / 2, SEEK_CUR);
    225     for(i = len / 2; i < len; i++)
     222    if (chunk)
     223        fseek(stream, chunk, SEEK_CUR);
     224    for(i = chunk; i < len; i++)
    226225        data[i] = mygetc(stream, getc_method);
    227226    fclose(stream);
     
    231230/* One fread(), then only getc() or fgetc() calls */
    232231static int zzcat_fread_getc(char const *name, unsigned char *data,
    233                             int64_t len, int getc_method)
     232                            int64_t len, int64_t chunk, int getc_method)
    234233{
    235234    FILE *stream = fopen(name, "r");
     
    237236    if(!stream)
    238237        return EXIT_FAILURE;
    239     fread(data, 1, len / 2, stream);
    240     for(i = len / 2; i < len; i++)
     238    if (chunk)
     239        fread(data, 1, chunk, stream);
     240    for(i = chunk; i < len; i++)
    241241        data[i] = mygetc(stream, getc_method);
    242242    fclose(stream);
Note: See TracChangeset for help on using the changeset viewer.