Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/posix/source/stdio/scanf.c

    rfbf4dc1 rfdf97f6  
    698698                                                        break;
    699699                                                case LMOD_j: ;
    700                                                         uintmax_t *pj = va_arg(arg, uintmax_t *);
    701                                                         *pj = (uintmax_t) ures;
     700                                                        posix_uintmax_t *pj = va_arg(arg, posix_uintmax_t *);
     701                                                        *pj = (posix_uintmax_t) ures;
    702702                                                        break;
    703703                                                case LMOD_z: ;
     
    740740                                                        break;
    741741                                                case LMOD_j: ;
    742                                                         intmax_t *pj = va_arg(arg, intmax_t *);
    743                                                         *pj = (intmax_t) sres;
     742                                                        posix_intmax_t *pj = va_arg(arg, posix_intmax_t *);
     743                                                        *pj = (posix_intmax_t) sres;
    744744                                                        break;
    745745                                                case LMOD_z: ;
     
    748748                                                        break;
    749749                                                case LMOD_t: ;
    750                                                         ptrdiff_t *pt = va_arg(arg, ptrdiff_t *);
    751                                                         *pt = (ptrdiff_t) sres;
     750                                                        posix_ptrdiff_t *pt = va_arg(arg, posix_ptrdiff_t *);
     751                                                        *pt = (posix_ptrdiff_t) sres;
    752752                                                        break;
    753753                                                default:
     
    12201220}
    12211221
     1222// FIXME: put the testcases to the app/tester after scanf is included into libc
     1223
     1224#if 0
     1225
     1226//#include <stdio.h>
     1227//#include <malloc.h>
     1228//#include <string.h>
     1229
     1230#define test_val(fmt, exp_val, act_val) \
     1231        if (exp_val == act_val) { \
     1232                printf("succ, expected "fmt", actual "fmt"\n", exp_val, act_val); \
     1233        } else { \
     1234                printf("fail, expected "fmt", actual "fmt"\n", exp_val, act_val); \
     1235                ++fail; \
     1236        }
     1237
     1238#define test_str(fmt, exp_str, act_str) \
     1239        if (posix_strcmp(exp_str, act_str) == 0) { \
     1240                printf("succ, expected "fmt", actual "fmt"\n", exp_str, act_str); \
     1241        } else { \
     1242                printf("fail, expected "fmt", actual "fmt"\n", exp_str, act_str); \
     1243                ++fail; \
     1244        }
     1245
     1246void __posix_scanf_test(void);
     1247void __posix_scanf_test(void)
     1248{
     1249        int fail = 0;
     1250
     1251        int ret;
     1252
     1253        unsigned char uhh;
     1254        signed char shh;
     1255        unsigned short uh;
     1256        short sh;
     1257        unsigned udef;
     1258        int sdef;
     1259        unsigned long ul;
     1260        long sl;
     1261        unsigned long long ull;
     1262        long long sll;
     1263        void *p;
     1264       
     1265        float f;
     1266        double d;
     1267        long double ld;
     1268
     1269        char str[20];
     1270        char seq[20];
     1271        char scanset[20];
     1272
     1273        char *pstr;
     1274        char *pseq;
     1275        char *pscanset;
     1276       
     1277        ret = posix_sscanf(
     1278            "\n j tt % \t -121314 98765 aqw 0765 0x77 0xABCDEF88 -99 884",
     1279            " j tt %%%3hhd%1hhu%3hd %3hu%u aqw%n %lo%llx %p %li %lld",
     1280            &shh, &uhh, &sh, &uh, &udef, &sdef, &ul, &ull, &p, &sl, &sll);
     1281        test_val("%d", -12, shh);
     1282        test_val("%u", 1, uhh);
     1283        test_val("%d", 314, sh);
     1284        test_val("%u", 987, uh);
     1285        test_val("%u", 65, udef);
     1286        test_val("%d", 28, sdef);
     1287        test_val("%lo", (unsigned long) 0765, ul);
     1288        test_val("%llx", (unsigned long long) 0x77, ull);
     1289        test_val("%p", (void *) 0xABCDEF88, p);
     1290        test_val("%ld", (long) -99, sl);
     1291        test_val("%lld", (long long) 884, sll);
     1292        test_val("%d", 10, ret);
     1293
     1294        ret = posix_sscanf(
     1295            "\n \t\t1.0 -0x555.AP10 1234.5678e12",
     1296            "%f %lf %Lf",
     1297            &f, &d, &ld);
     1298        test_val("%f", 1.0, f);
     1299        test_val("%lf", (double) -0x555.AP10, d);
     1300        test_val("%Lf", (long double) 1234.5678e12, ld);
     1301        test_val("%d", 3, ret);
     1302         
     1303        ret = posix_sscanf(
     1304            "\n\n\thello world    \n",
     1305            "%5s %ms",
     1306            str, &pstr);
     1307        test_str("%s", "hello", str);
     1308        test_str("%s", "world", pstr);
     1309        test_val("%d", 2, ret);
     1310        free(pstr);
     1311
     1312        ret = posix_sscanf(
     1313            "\n\n\thello world    \n",
     1314            " %5c %mc",
     1315            seq, &pseq);
     1316        seq[5] = '\0';
     1317        pseq[1] = '\0';
     1318        test_str("%s", "hello", seq);
     1319        test_str("%s", "w", pseq);
     1320        test_val("%d", 2, ret);
     1321        free(pseq);
     1322
     1323        ret = posix_sscanf(
     1324            "\n\n\th-e-l-l-o world-]    \n",
     1325            " %9[-eh-o] %m[^]-]",
     1326            scanset, &pscanset);
     1327        test_str("%s", "h-e-l-l-o", scanset);
     1328        test_str("%s", "world", pscanset);
     1329        test_val("%d", 2, ret);
     1330        free(pscanset);
     1331
     1332        printf("Failed: %d\n", fail);
     1333}
     1334
     1335#endif
     1336
    12221337/** @}
    12231338 */
Note: See TracChangeset for help on using the changeset viewer.