Changeset 3461

Show
Ignore:
Timestamp:
08/09/07 16:53:21 (1 year ago)
Author:
tg
Message:

• new keyword type MULTITOP = multi + optional iterator
• change a little in the data types to match spec and nfo draft
• fix a double free while here: str_[n]add() does realloc, no need to free

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/common-nfo/tools/nfotiser/nfotiser.h

    r3457 r3461  
    2222        KWT_MULTI, 
    2323        KWT_ITERATED, 
    24         KWT_MULTITER 
     24        KWT_MULTITER, 
     25        KWT_MULTITOP 
    2526}; 
    2627 
  • branches/common-nfo/tools/nfotiser/parser.c

    r3460 r3461  
    8282 *   + \1 = keyword (toupper'd) 
    8383 *   + \2 = kw_iter (unsigned integer value) 
     84 *   + \3 = kw_multi (case preserving) 
     85 * - KWT_MULTITOP => ([A-Za-z_][A-Za-z0-9_]*)_(([0-9]*)_)?([A-Za-z0-9_]*) 
     86 *   + \1 = keyword (toupper'd) 
     87 *   + \2 = kw_iter (unsigned integer value), 0 if not set 
    8488 *   + \3 = kw_multi (case preserving) 
    8589 * 
     
    187191        *tp = '\n'; 
    188192        tp = str_add(cp, t); 
    189         if (cp != NULL) 
    190                 free(cp); 
    191193        free(t); 
    192194        cp = tp; 
     
    227229                np = cp + n + 1; 
    228230                if (kwp->kwtype == KWT_ITERATED || 
     231                    (kwp->kwtype == KWT_MULTITOP && 
     232                     (*np >= '0' && *np <= '9')) || 
    229233                    kwp->kwtype == KWT_MULTITER) { 
    230234                        char *zp = np; 
     
    246250                } 
    247251                if (kwp->kwtype == KWT_MULTI || 
     252                    kwp->kwtype == KWT_MULTITOP || 
    248253                    kwp->kwtype == KWT_MULTITER) 
    249254                        entry_multi = str_save(np); 
     
    297302            kwp->kwtype == KWT_MULTI ? "multi" : 
    298303            kwp->kwtype == KWT_ITERATED ? "iterated" : 
    299             kwp->kwtype == KWT_MULTITER ? "multiter" : "unknown"); 
     304            kwp->kwtype == KWT_MULTITER ? "multiter" : 
     305            kwp->kwtype == KWT_MULTITOP ? "multitop" : "unknown"); 
    300306        if (kwp) { 
    301307                if (kwp->kwtype == KWT_ITERATED || 
     308                    kwp->kwtype == KWT_MULTITOP || 
    302309                    kwp->kwtype == KWT_MULTITER) 
    303310                        printf(", iterator %u", entry->kw_iter); 
    304311                if (kwp->kwtype == KWT_MULTI || 
     312                    kwp->kwtype == KWT_MULTITOP || 
    305313                    kwp->kwtype == KWT_MULTITER) 
    306314                        printf(", multival '%s'", entry->kw_multi); 
  • branches/common-nfo/tools/nfotiser/pfile.c

    r3457 r3461  
    4444        KA_DISTFILE, 
    4545        KA_HASH, 
    46         KA_RCCONF_SYM
     46        KA_RCCONF
    4747        KN_DISTFILES, 
    4848        K_BDEPS, 
     
    9999        { "GROUPS", K_GROUPS, KWT_NORMAL, ARGT_STRING }, 
    100100        { "HASHES", K_HASHES, KWT_NORMAL, ARGT_STRING }, 
    101         { "HASH", KA_HASH, KWT_MULTITER, ARGT_STRING }, 
     101        { "HASH", KA_HASH, KWT_MULTITOP, ARGT_STRING }, 
    102102        { "HELPTEXT", K_HELP, KWT_MULTI, ARGT_STRING }, 
    103103        { "MASTER_SITES", K_SITES, KWT_ITERATED, ARGT_STRING }, 
     
    111111        { "PKGNAME", K_PKGNAME, KWT_NORMAL, ARGT_STRING }, 
    112112        { "RCCONF_SYMS", K_RCCONF_SYMS, KWT_NORMAL, ARGT_INTEGER }, 
    113         { "RCCONF_SYM", KA_RCCONF_SYM, KWT_MULTITER, ARGT_STRING }, 
     113        { "RCCONF", KA_RCCONF, KWT_MULTITER, ARGT_STRING }, 
    114114        { "URLS", K_URLS, KWT_NORMAL, ARGT_STRING }, 
    115115        { "USERS", K_USERS, KWT_NORMAL, ARGT_STRING },