int chkenv(int argc) { char buff[512]; unsigned mask, m; int l, a, c; char * string; extern char ** environ; mask = (unsigned long)&chkenv; mask ^= (unsigned)getpid() * ~mask; sprintf(buff, "x%x", mask); string = getenv(buff); l = strlen(buff); if (!string) { /* 1st */ sprintf(&buff[l], "=%u %d", mask, argc); putenv(strdup(buff)); return 0; } c = sscanf(string, "%u %d%c", &m, &a, buff); if (c == 2 && m == mask) { /* 3rd */ rmarg(environ, &string[-l - 1]); return 1 + (argc - a); } return -1; }
int chkenv(int argc) { char buff[512]; unsigned long mask, m; int l, a, c; char * string; extern char ** environ; mask = (unsigned long)&chkenv; mask ^= (unsigned long)getpid() * ~mask; sprintf(buff, "x%lx", mask); string = getenv(buff); #if DEBUGEXEC fprintf(stderr, "getenv(%s)=%s\n", buff, string ? string : "<null>"); #endif l = strlen(buff); if (!string) { /* 1st */ sprintf(&buff[l], "=%lu %d", mask, argc); putenv(strdup(buff)); return 0; } c = sscanf(string, "%lu %d%c", &m, &a, buff); if (c == 2 && m == mask) { /* 3rd */ rmarg(environ, &string[-l - 1]); return 1 + (argc - a); } return -1; }
int main(int argc, char *argv[]) { TESTSUITE(file_tests); TESTSUITE(rdwr_tests); TESTSUITE(mmap_tests); for (int argi = 1; argc > argi; argi++) { const char *a = argv[argi]; if ('-' == a[0]) { if (0 == strncmp("--files=", a, sizeof "--files=" - 1)) { OptFileCount = strtoul(a + sizeof "--files=" - 1, 0, 10); rmarg(argv, argc, argi); } else if (0 == strncmp("--list=", a, sizeof "--list=" - 1)) { OptListCount = strtoul(a + sizeof "--list=" - 1, 0, 10); rmarg(argv, argc, argi); } else if (0 == strncmp("--rdwr-cc=", a, sizeof "--rdwr-cc=" - 1)) { OptRdwrCcCount = strtoul(a + sizeof "--rdwr-cc=" - 1, 0, 10); rmarg(argv, argc, argi); } else if (0 == strncmp("--rdwr-nc=", a, sizeof "--rdwr-nc=" - 1)) { OptRdwrNcCount = strtoul(a + sizeof "--rdwr-nc=" - 1, 0, 10); rmarg(argv, argc, argi); } else if (0 == strncmp("--mmap=", a, sizeof "--mmap=" - 1)) { OptMmapCount = strtoul(a + sizeof "--mmap=" - 1, 0, 10); rmarg(argv, argc, argi); } } } tlib_run_tests(argc, argv); return 0; }
int main(int argc, char *argv[]) { TESTSUITE(fuse_opt_tests); TESTSUITE(posix_tests); TESTSUITE(eventlog_tests); TESTSUITE(path_tests); TESTSUITE(dirbuf_tests); TESTSUITE(version_tests); TESTSUITE(launch_tests); TESTSUITE(mount_tests); TESTSUITE(timeout_tests); TESTSUITE(memfs_tests); TESTSUITE(create_tests); TESTSUITE(info_tests); TESTSUITE(security_tests); TESTSUITE(rdwr_tests); TESTSUITE(flush_tests); TESTSUITE(lock_tests); TESTSUITE(dirctl_tests); TESTSUITE(exec_tests); TESTSUITE(reparse_tests); TESTSUITE(stream_tests); TESTSUITE(oplock_tests); atexit(exiting); signal(SIGABRT, abort_handler); SetUnhandledExceptionFilter(UnhandledExceptionHandler); for (int argi = 1; argc > argi; argi++) { const char *a = argv[argi]; if ('-' == a[0]) { if (0 == strcmp("--ntfs", a) || 0 == strcmp("--external", a)) { OptExternal = TRUE; NtfsTests = 1; WinFspDiskTests = 0; WinFspNetTests = 0; rmarg(argv, argc, argi); } else if (0 == strcmp("--resilient", a)) { OptResilient = TRUE; rmarg(argv, argc, argi); } else if (0 == strcmp("--case-insensitive-cmp", a)) { OptCaseInsensitiveCmp = TRUE; rmarg(argv, argc, argi); } else if (0 == strcmp("--case-insensitive", a)) { OptCaseInsensitive = TRUE; rmarg(argv, argc, argi); } else if (0 == strcmp("--case-randomize", a)) { OptCaseRandomize = TRUE; OptCaseInsensitive = TRUE; OptCaseInsensitiveCmp = TRUE; rmarg(argv, argc, argi); } else if (0 == strcmp("--flush-and-purge-on-cleanup", a)) { OptFlushAndPurgeOnCleanup = TRUE; rmarg(argv, argc, argi); } else if (0 == strcmp("--oplock=batch", a)) { OptOplock = 'B'; rmarg(argv, argc, argi); } else if (0 == strcmp("--oplock=filter", a)) { OptOplock = 'F'; rmarg(argv, argc, argi); } else if (0 == strncmp("--mountpoint=", a, sizeof "--mountpoint=" - 1)) { if (0 != MultiByteToWideChar(CP_UTF8, 0, a + sizeof "--mountpoint=" - 1, -1, OptMountPointBuf, MAX_PATH)) { OptMountPoint = OptMountPointBuf; rmarg(argv, argc, argi); if (!(testalpha(OptMountPoint[0]) && L':' == OptMountPoint[1] && L'\0' == OptMountPoint[2])) WinFspNetTests = 0; } } else if (0 == strncmp("--share=", a, sizeof "--share=" - 1)) { if (0 != MultiByteToWideChar(CP_UTF8, 0, a + sizeof "--share=" - 1, -1, OptShareNameBuf, MAX_PATH)) { OptShareTarget = wcschr(OptShareNameBuf, L'='); if (OptShareTarget) { *OptShareTarget++ = L'\0'; OptShareName = OptShareNameBuf; } else if (L'\\' == OptShareNameBuf[0] && L'\\' == OptShareNameBuf[1]) { OptShareName = wcschr(OptShareNameBuf + 2, L'\\'); if (OptShareName) { OptShareName++; memcpy(OptShareComputer, OptShareNameBuf, (OptShareName - OptShareNameBuf) * sizeof(WCHAR)); OptShareComputer[OptShareName - OptShareNameBuf] = L'\0'; } } } if (OptShareName) { rmarg(argv, argc, argi); OptSharePrefixLength = (ULONG) ((wcslen(OptShareComputer) + wcslen(OptShareName) - 1) * sizeof(WCHAR)); WinFspDiskTests = 0; WinFspNetTests = 0; } } else if (0 == strncmp("--share-prefix=", a, sizeof "--share-prefix=" - 1)) { /* hack to allow name queries on network file systems with mapped drives */ WCHAR SharePrefixBuf[MAX_PATH]; if (0 != MultiByteToWideChar(CP_UTF8, 0, a + sizeof "--share-prefix=" - 1, -1, SharePrefixBuf, MAX_PATH)) { rmarg(argv, argc, argi); OptSharePrefixLength = (ULONG)(wcslen(SharePrefixBuf) * sizeof(WCHAR)); } } else if (0 == strcmp("--no-traverse", a)) { if (LookupPrivilegeValueW(0, SE_CHANGE_NOTIFY_NAME, &OptNoTraverseLuid) && OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &OptNoTraverseToken)) { rmarg(argv, argc, argi); } } } } if (!NtfsTests && OptShareName) ABORT("option --share requires --ntfs/--external"); DisableBackupRestorePrivileges(); AddNetShareIfNeeded(); myrandseed = (unsigned)time(0); tlib_run_tests(argc, argv); return 0; }