Annotation of qemu/tests/test_path.c, revision 1.1

1.1     ! root        1: /* Test path override code */
        !             2: #define _GNU_SOURCE
        !             3: #include "../path.c"
        !             4: #include <stdarg.h>
        !             5: #include <sys/stat.h>
        !             6: #include <fcntl.h>
        !             7: 
        !             8: /* Any log message kills the test. */
        !             9: void gemu_log(const char *fmt, ...)
        !            10: {
        !            11:     va_list ap;
        !            12: 
        !            13:     fprintf(stderr, "FATAL: ");
        !            14:     va_start(ap, fmt);
        !            15:     vfprintf(stderr, fmt, ap);
        !            16:     va_end(ap);
        !            17:     exit(1);
        !            18: }
        !            19: 
        !            20: #define NO_CHANGE(_path)                                               \
        !            21:        do {                                                            \
        !            22:            if (strcmp(path(_path), _path) != 0) return __LINE__;       \
        !            23:        } while(0)
        !            24: 
        !            25: #define CHANGE_TO(_path, _newpath)                                     \
        !            26:        do {                                                            \
        !            27:            if (strcmp(path(_path), _newpath) != 0) return __LINE__;    \
        !            28:        } while(0)
        !            29: 
        !            30: static void cleanup(void)
        !            31: {
        !            32:     unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE");
        !            33:     unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE2");
        !            34:     unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE3");
        !            35:     unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE4");
        !            36:     unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE5");
        !            37:     rmdir("/tmp/qemu-test_path/DIR1/DIR2");
        !            38:     rmdir("/tmp/qemu-test_path/DIR1/DIR3");
        !            39:     rmdir("/tmp/qemu-test_path/DIR1");
        !            40:     rmdir("/tmp/qemu-test_path");
        !            41: }
        !            42: 
        !            43: static unsigned int do_test(void)
        !            44: {
        !            45:     if (mkdir("/tmp/qemu-test_path", 0700) != 0)
        !            46:        return __LINE__;
        !            47: 
        !            48:     if (mkdir("/tmp/qemu-test_path/DIR1", 0700) != 0)
        !            49:        return __LINE__;
        !            50: 
        !            51:     if (mkdir("/tmp/qemu-test_path/DIR1/DIR2", 0700) != 0)
        !            52:        return __LINE__;
        !            53: 
        !            54:     if (mkdir("/tmp/qemu-test_path/DIR1/DIR3", 0700) != 0)
        !            55:        return __LINE__;
        !            56: 
        !            57:     if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE", 0600)) != 0)
        !            58:        return __LINE__;
        !            59: 
        !            60:     if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE2", 0600)) != 0)
        !            61:        return __LINE__;
        !            62: 
        !            63:     if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE3", 0600)) != 0)
        !            64:        return __LINE__;
        !            65: 
        !            66:     if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE4", 0600)) != 0)
        !            67:        return __LINE__;
        !            68: 
        !            69:     if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE5", 0600)) != 0)
        !            70:        return __LINE__;
        !            71: 
        !            72:     init_paths("/tmp/qemu-test_path");
        !            73: 
        !            74:     NO_CHANGE("/tmp");
        !            75:     NO_CHANGE("/tmp/");
        !            76:     NO_CHANGE("/tmp/qemu-test_path");
        !            77:     NO_CHANGE("/tmp/qemu-test_path/");
        !            78:     NO_CHANGE("/tmp/qemu-test_path/D");
        !            79:     NO_CHANGE("/tmp/qemu-test_path/DI");
        !            80:     NO_CHANGE("/tmp/qemu-test_path/DIR");
        !            81:     NO_CHANGE("/tmp/qemu-test_path/DIR1");
        !            82:     NO_CHANGE("/tmp/qemu-test_path/DIR1/");
        !            83: 
        !            84:     NO_CHANGE("/D");
        !            85:     NO_CHANGE("/DI");
        !            86:     NO_CHANGE("/DIR");
        !            87:     NO_CHANGE("/DIR2");
        !            88:     NO_CHANGE("/DIR1.");
        !            89: 
        !            90:     CHANGE_TO("/DIR1", "/tmp/qemu-test_path/DIR1");
        !            91:     CHANGE_TO("/DIR1/", "/tmp/qemu-test_path/DIR1");
        !            92: 
        !            93:     NO_CHANGE("/DIR1/D");
        !            94:     NO_CHANGE("/DIR1/DI");
        !            95:     NO_CHANGE("/DIR1/DIR");
        !            96:     NO_CHANGE("/DIR1/DIR1");
        !            97: 
        !            98:     CHANGE_TO("/DIR1/DIR2", "/tmp/qemu-test_path/DIR1/DIR2");
        !            99:     CHANGE_TO("/DIR1/DIR2/", "/tmp/qemu-test_path/DIR1/DIR2");
        !           100: 
        !           101:     CHANGE_TO("/DIR1/DIR3", "/tmp/qemu-test_path/DIR1/DIR3");
        !           102:     CHANGE_TO("/DIR1/DIR3/", "/tmp/qemu-test_path/DIR1/DIR3");
        !           103: 
        !           104:     NO_CHANGE("/DIR1/DIR2/F");
        !           105:     NO_CHANGE("/DIR1/DIR2/FI");
        !           106:     NO_CHANGE("/DIR1/DIR2/FIL");
        !           107:     NO_CHANGE("/DIR1/DIR2/FIL.");
        !           108: 
        !           109:     CHANGE_TO("/DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
        !           110:     CHANGE_TO("/DIR1/DIR2/FILE2", "/tmp/qemu-test_path/DIR1/DIR2/FILE2");
        !           111:     CHANGE_TO("/DIR1/DIR2/FILE3", "/tmp/qemu-test_path/DIR1/DIR2/FILE3");
        !           112:     CHANGE_TO("/DIR1/DIR2/FILE4", "/tmp/qemu-test_path/DIR1/DIR2/FILE4");
        !           113:     CHANGE_TO("/DIR1/DIR2/FILE5", "/tmp/qemu-test_path/DIR1/DIR2/FILE5");
        !           114: 
        !           115:     NO_CHANGE("/DIR1/DIR2/FILE6");
        !           116:     NO_CHANGE("/DIR1/DIR2/FILE/X");
        !           117: 
        !           118:     CHANGE_TO("/DIR1/../DIR1", "/tmp/qemu-test_path/DIR1");
        !           119:     CHANGE_TO("/DIR1/../DIR1/", "/tmp/qemu-test_path/DIR1");
        !           120:     CHANGE_TO("/../DIR1", "/tmp/qemu-test_path/DIR1");
        !           121:     CHANGE_TO("/../DIR1/", "/tmp/qemu-test_path/DIR1");
        !           122:     CHANGE_TO("/DIR1/DIR2/../DIR2", "/tmp/qemu-test_path/DIR1/DIR2");
        !           123:     CHANGE_TO("/DIR1/DIR2/../DIR2/../../DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
        !           124:     CHANGE_TO("/DIR1/DIR2/../DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
        !           125: 
        !           126:     NO_CHANGE("/DIR1/DIR2/../DIR1");
        !           127:     NO_CHANGE("/DIR1/DIR2/../FILE");
        !           128: 
        !           129:     CHANGE_TO("/./DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
        !           130:     CHANGE_TO("/././DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
        !           131:     CHANGE_TO("/DIR1/./DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
        !           132:     CHANGE_TO("/DIR1/././DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
        !           133:     CHANGE_TO("/DIR1/DIR2/./FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
        !           134:     CHANGE_TO("/DIR1/DIR2/././FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
        !           135:     CHANGE_TO("/./DIR1/./DIR2/./FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
        !           136: 
        !           137:     return 0;
        !           138: }
        !           139: 
        !           140: int main(int argc, char *argv[])
        !           141: {
        !           142:     int ret;
        !           143: 
        !           144:     ret = do_test();
        !           145:     cleanup();
        !           146:     if (ret) {
        !           147:        fprintf(stderr, "test_path: failed on line %i\n", ret);
        !           148:        return 1;
        !           149:     }
        !           150:     return 0;
        !           151: }
        !           152:        

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.