Ignore:
Timestamp:
Jan 19, 2007, 6:57:42 AM (19 years ago)
Author:
bird
Message:

ported printf to MSC.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gmake/kmkbuiltin/mscfakes.c

    r370 r775  
    3737
    3838char *dirname(char *path)
    39 {         
     39{
    4040    /** @todo later */
    4141    return path;
     
    127127    return cch;
    128128}
    129 #endif 
     129#endif
    130130
    131131
     
    151151}
    152152
     153
     154intmax_t strtoimax(const char *nptr, char **endptr, int base)
     155{
     156    return strtol(nptr, endptr, base); /** @todo fix this. */
     157}
     158
     159
     160uintmax_t strtoumax(const char *nptr, char **endptr, int base)
     161{
     162    return strtoul(nptr, endptr, base); /** @todo fix this. */
     163}
     164
     165
     166int asprintf(char **strp, const char *fmt, ...)
     167{
     168    int rc;
     169    va_list va;
     170    va_start(va, fmt);
     171    rc = vasprintf(strp, fmt, va);
     172    va_end(va);
     173    return rc;
     174}
     175
     176
     177int vasprintf(char **strp, const char *fmt, va_list va)
     178{
     179    int rc;
     180    char *psz;
     181    size_t cb = 1024;
     182
     183    *strp = NULL;
     184    for (;;)
     185    {
     186        va_list va2;
     187
     188        psz = malloc(cb);
     189        if (!psz)
     190            return -1;
     191
     192#ifdef va_copy
     193        va_copy(va2, va);
     194        rc = snprintf(psz, cb, fmt, va2);
     195        va_end(vaCopy);
     196#else
     197        va2 = va;
     198        rc = snprintf(psz, cb, fmt, va2);
     199#endif
     200        if (rc < 0 || (size_t)rc < cb)
     201            break;
     202        cb *= 2;
     203        free(psz);
     204    }
     205
     206    *strp = psz;
     207    return rc;
     208}
     209
Note: See TracChangeset for help on using the changeset viewer.