]> Zhao Yanbai Git Server - minix.git/commitdiff
Clean up tests and do runtime test for max name length
authorThomas Veerman <thomas@minix3.org>
Fri, 26 Aug 2011 13:16:16 +0000 (13:16 +0000)
committerThomas Veerman <thomas@minix3.org>
Fri, 26 Aug 2011 13:16:16 +0000 (13:16 +0000)
- Remove unused code
- Use standard functions declared in common.c
- Change tests to do a runtime test for the max name length of a path
  component (aka NAME_MAX). The actual value might differ from the hard
  coded NAME_MAX depending on the file system used.

22 files changed:
test/common.c
test/test20.c
test/test21.c
test/test22.c
test/test23.c
test/test24.c
test/test25.c
test/test26.c
test/test27.c
test/test28.c
test/test29.c
test/test30.c
test/test31.c
test/test32.c
test/test33.c
test/test34.c
test/test35.c
test/test36.c
test/test37.c
test/test38.c
test/test39.c
test/test53.c

index 5aa66fa932628209f183361263c803eb14dfd232..f42bdca580c8ca1b222cacb7bbe26cf7a4793c15 100644 (file)
@@ -15,6 +15,7 @@ int common_test_nr = -1, errct = 0, subtest;
 _PROTOTYPE(void cleanup, (void));
 _PROTOTYPE(int does_fs_truncate, (void));
 _PROTOTYPE(void e, (int n));
+_PROTOTYPE(int name_max, (char *path));
 _PROTOTYPE(void quit, (void));
 _PROTOTYPE(void rm_rf_dir, (int test_nr));
 _PROTOTYPE(void rm_rf_ppdir, (int test_nr));
@@ -59,6 +60,14 @@ int does_fs_truncate(void)
   return(does_truncate); 
 }
 
+int name_max(char *path)
+{
+  struct statvfs stvfs;
+
+  if (statvfs(path, &stvfs) != 0) e(7779);
+  return(stvfs.f_namemax);
+}
+
 
 void rm_rf_dir(test_nr)
 int test_nr;
index 68b2aaf04d6db369e4bdca3d4b2cfaace1beb829..06d5370e893e2819ef3aae0ebfd2d3fe622e52c8 100644 (file)
 #define Chdir(dir)     if (chdir(dir) != 0) printf("Can't goto %s\n", dir)
 #define Stat(a,b)      if (stat(a,b) != 0) printf("Can't stat %s\n", a)
 
-int errct = 0;
-int subtest = 1;
+#include "common.c"
+
 int superuser;
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
-char MaxPath[PATH_MAX];                /* Same for path */
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
-char ToLongPath[PATH_MAX + 1]; /* Same for path, both too long */
 
 _PROTOTYPE(void test20a, (void));
 _PROTOTYPE(void test20b, (void));
 _PROTOTYPE(void test20c, (void));
 _PROTOTYPE(void test20d, (void));
 _PROTOTYPE(int do_check, (void));
-_PROTOTYPE(void makelongnames, (void));
-_PROTOTYPE(void e, (int number));
-_PROTOTYPE(void quit, (void));
 
 char executable[1024];
 
@@ -60,11 +53,7 @@ int main(int argc, char *argv[])
   strcpy(executable, "../");
   strcat(executable, argv[0]);
 
-  printf("Test 20 ");
-  fflush(stdout);
-  System("rm -rf DIR_20; mkdir DIR_20");
-  Chdir("DIR_20");
-  makelongnames();
+  start(20);
   superuser = (geteuid() == 0);
 
   for (i = 0; i < ITERATIONS; i++) {
@@ -339,57 +328,3 @@ int do_check()
   return retval;
 }
 
-void makelongnames()
-{
-  register int i;
-
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
-  for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
-       MaxPath[i++] = '.';
-       MaxPath[i] = '/';
-  }
-  MaxPath[PATH_MAX - 1] = '\0';
-
-  strcpy(ToLongName, MaxName); /* copy them Max to ToLong */
-  strcpy(ToLongPath, MaxPath);
-
-  ToLongName[NAME_MAX] = 'a';
-  ToLongName[NAME_MAX + 1] = '\0';     /* extend ToLongName by one too many */
-  ToLongPath[PATH_MAX - 1] = '/';
-  ToLongPath[PATH_MAX] = '\0'; /* inc ToLongPath by one */
-}
-
-void e(n)
-int n;
-{
-  int err_num = errno;         /* Save in case printf clobbers it. */
-
-  printf("Subtest %d,  error %d  errno=%d: ", subtest, n, errno);
-  errno = err_num;
-  perror("");
-  if (errct++ > MAX_ERROR) {
-       printf("Too many errors; test aborted\n");
-       chdir("..");
-       system("rm -rf DIR*");
-       exit(1);
-  }
-  errno = 0;
-}
-
-void quit()
-{
-  Chdir("..");
-  System("rm -rf DIR_20");
-
-  if (errct == 0) {
-       printf("ok\n");
-       exit(0);
-  } else if (errct < 10000) {
-       printf("%d errors\n", errct);
-       exit(1);
-  } else {
-       printf("errors\n");
-       exit(2);
-  }
-}
index 2a9b8328589e0b544dc1eaee04aa62fe9608f942..961fadb9bb17c46072b0dda591c2e7b49987c964 100644 (file)
@@ -18,7 +18,7 @@
 #define ITERATIONS        1
 #define MAX_ERROR 4
 
-int subtest, errct;
+#include "common.c"
 
 _PROTOTYPE(int main, (int argc, char *argv []));
 _PROTOTYPE(void test21a, (void));
@@ -36,8 +36,6 @@ _PROTOTYPE(void test21m, (void));
 _PROTOTYPE(void test21n, (void));
 _PROTOTYPE(void test21o, (void));
 _PROTOTYPE(int get_link, (char *name));
-_PROTOTYPE(void e, (int n));
-_PROTOTYPE(void quit, (void));
 
 int main(argc, argv)
 int argc;
@@ -50,12 +48,8 @@ char *argv[];
   sync();
 
   if (argc == 2) m = atoi(argv[1]);
-  printf("Test 21 ");
-  fflush(stdout);
-
-  system("rm -rf DIR_21; mkdir DIR_21");
-  chdir("DIR_21");
 
+  start(21);
   for (i = 0; i < ITERATIONS; i++) {
        if (m & 00001) test21a();
        if (m & 00002) test21b();
@@ -73,7 +67,6 @@ char *argv[];
        if (m & 020000) test21o();
   }
   quit();
-  return(-1);                  /* impossible */
 }
 
 void test21a()
@@ -360,12 +353,6 @@ void test21e()
   errno = 0;
   if (mkdir("D1", 0777) != -1) e(8);
   if (errno != EEXIST) e(9);
-#if NAME_MAX == 14
-  if (mkdir("D1/ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0777) != 0) e(10);
-  if (access("D1/ABCDEFGHIJKLMN", 7 ) != 0) e(11);
-  if (rmdir("D1/ABCDEFGHIJKLMNOPQ") != 0) e(12);
-  if (access("D1/ABCDEFGHIJKLMN", 7 ) != -1) e(13);
-#endif
   errno = 0;
   if (mkdir("D1/D2/x", 0777) != -1) e(14);
   if (errno != ENOENT) e(15);
@@ -651,32 +638,3 @@ char *name;
   return(statbuf.st_nlink);
 }
 
-void e(n)
-int n;
-{
-  int err_num = errno;         /* save errno in case printf clobbers it */
-
-  printf("Subtest %d,  error %d  errno=%d  ", subtest, n, errno);
-  errno = err_num;             /* restore errno, just in case */
-  perror("");
-  if (errct++ > MAX_ERROR) {
-       printf("Too many errors; test aborted\n");
-       chdir("..");
-       system("rm -rf DIR*");
-       exit(1);
-  }
-}
-
-void quit()
-{
-  chdir("..");
-  system("rm -rf DIR*");
-
-  if (errct == 0) {
-       printf("ok\n");
-       exit(0);
-  } else {
-       printf("%d errors\n", errct);
-       exit(1);
-  }
-}
index 20249ac2bd2b8f79d1a82d8f224f62cbad4f385b..4be95d05e1c4daae354f5b43d2c1db3eebef1d30 100644 (file)
@@ -16,8 +16,7 @@
 #define Chdir(dir)     if (chdir(dir) != 0) printf("Can't goto %s\n", dir)
 #define Stat(a,b)      if (stat(a,b) != 0) printf("Can't stat %s\n", a)
 
-int errct = 0;                 /* Total error counter. */
-int subtest = 1;
+#include "common.c"
 
 _PROTOTYPE(void test22a, (void));
 _PROTOTYPE(int mode, (char *filename));
@@ -31,11 +30,7 @@ int main(int argc, char *argv[])
 
   sync();
   if (argc == 2) m = atoi(argv[1]);
-  printf("Test 22 ");
-  fflush(stdout);
-  system("chmod 777 DIR_22/* DIR_22/*/* > /dev/null 2>&1");
-  System("rm -rf DIR_22; mkdir DIR_22");
-  Chdir("DIR_22");
+  start(22);
 
   for (i = 0; i < ITERATIONS; i++) {
        if (m & 0001) test22a();
@@ -165,34 +160,3 @@ char *arg;
   return 0777 ^ mode(arg);
 }
 
-void e(n)
-int n;
-{
-  int err_num = errno;         /* Save in case printf clobbers it. */
-
-  printf("Subtest %d,  error %d  errno=%d: ", subtest, n, errno);
-  errno = err_num;
-  perror("");
-  if (errct++ > MAX_ERROR) {
-       printf("Too many errors; test aborted\n");
-       chdir("..");
-       system("rm -rf DIR*");
-       exit(1);
-  }
-  errno = 0;
-}
-
-void quit()
-{
-  Chdir("..");
-  system("chmod 777 ../DIR_22/* ../DIR_22/*/* > /dev/null 2>&1");
-  System("rm -rf DIR_22");
-
-  if (errct == 0) {
-       printf("ok\n");
-       exit(0);
-  } else {
-       printf("%d errors\n", errct);
-       exit(1);
-  }
-}
index 1b2bbbcd4c77ea400d74eb05f6124e96e841ab29..059c8bd5814e5244eabc949ae66d14315aca8021 100644 (file)
@@ -25,17 +25,15 @@ int superuser;                      /* True if we are root. */
 char cwd[PATH_MAX];            /* Space for path names. */
 char cwd2[PATH_MAX];
 char buf[PATH_MAX];
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
+char *MaxName;                 /* Name of maximum length */
 char MaxPath[PATH_MAX];                /* Same for path */
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
+char *ToLongName;              /* Name of maximum +1 length */
 char ToLongPath[PATH_MAX + 1]; /* Same for path, both too long */
 
 _PROTOTYPE(void test23a, (void));
 _PROTOTYPE(void test23b, (void));
 _PROTOTYPE(void test23c, (void));
 _PROTOTYPE(void makelongnames, (void));        /* Fill MaxName etc. */
-_PROTOTYPE(char *last_index, (char *string, int ch));
-_PROTOTYPE(char *my_getcwd, (char *buf, int size));
 
 int main(int argc, char *argv[])
 {
@@ -135,7 +133,7 @@ void test23b()
 
   System("rm -rf ../DIR_23/*");
 
-  /* Fiddle with the size (2nt) parameter of `getcwd ()'. */
+  /* Fiddle with the size (2nd) parameter of `getcwd ()'. */
   if (getcwd(cwd, PATH_MAX) != cwd) e(1);      /* get cwd */
   if (getcwd(buf, strlen(cwd)) != (char *) 0) e(2);   /* size 1 to small */
   if (errno != ERANGE) e(3);
@@ -279,9 +277,15 @@ void test23c()
 void makelongnames()
 {
   register int i;
+  int max_name_length;
+
+  max_name_length = name_max("."); /* Aka NAME_MAX, but not every FS supports
+                                   * the same length, hence runtime check */
+  MaxName = malloc(max_name_length + 1);
+  ToLongName = malloc(max_name_length + 1 + 1); /* Name of maximum +1 length */
+  memset(MaxName, 'a', max_name_length);
+  MaxName[max_name_length] = '\0';
 
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
   for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
        MaxPath[i++] = '.';
        MaxPath[i] = '/';
@@ -291,79 +295,9 @@ void makelongnames()
   strcpy(ToLongName, MaxName); /* copy them Max to ToLong */
   strcpy(ToLongPath, MaxPath);
 
-  ToLongName[NAME_MAX] = 'a';
-  ToLongName[NAME_MAX + 1] = '\0';     /* extend ToLongName by one too many */
+  ToLongName[max_name_length] = 'a';
+  ToLongName[max_name_length+1] = '\0';/* extend ToLongName by one too many */
   ToLongPath[PATH_MAX - 1] = '/';
   ToLongPath[PATH_MAX] = '\0'; /* inc ToLongPath by one */
 }
 
-/* The following code, is take from pwd written by Adri Koppes */
-
-/* My_getcwd() helper. */
-char *last_index(string, ch)
-char *string;
-char ch;
-{
-  register char *retval = '\0';
-
-  while (*string != '\0') {
-       if (*string == ch) retval = string;
-       string++;
-  }
-  return(retval);
-}
-
-char *my_getcwd(buf, size)
-char *buf;
-int size;
-{                              /* should be like getcwd() */
-  int sd;
-  register int fd;
-  register char *n;
-  char name[128];
-  struct stat s, st, sk;
-  struct direct d;
-
-  if (size <= 0) return(char *) 0;
-
-  *buf = '\0';
-  *name = '\0';
-  stat(".", &s);
-  do {
-       if ((fd = open("..", O_RDONLY)) < 0) return(char *) 0;
-       st.st_dev = s.st_dev;
-       st.st_ino = s.st_ino;
-       stat("..", &s);
-       Chdir("..");
-       sd = sizeof(struct direct);
-       if (s.st_dev == st.st_dev) {
-               do {
-                       if (read(fd, (char *) &d, sd) < sd) return(char *) 0;
-               } while (d.d_ino != st.st_ino);
-       } else {
-               do {
-                       if (read(fd, (char *) &d, sd) < sd) return(char *) 0;
-                       stat(d.d_name, &sk);
-               } while ((sk.st_dev != st.st_dev) ||
-                        (sk.st_ino != st.st_ino));
-       }
-       close(fd);
-       if (strcmp(".", d.d_name) != 0) {
-               strcat(name, "/");
-               strcat(name, d.d_name);
-       }
-  } while ((s.st_ino != st.st_ino) || (s.st_dev != st.st_dev));
-  if (*name == '\0')
-       strncat(buf, "/", size);
-  else
-       while ((n = last_index(name, '/')) != NULL) {
-               n[NAME_MAX] = '\0';
-               strncat(buf, n, size - strlen(buf));
-               *n = '\0';
-       }
-  strncat(buf, name, size - strlen(buf));
-  buf[size - 1] = '\0';
-  Chdir(buf);                  /* get back there */
-  return buf;
-}
-
index 4b153cabff20beb21e15e96cd47163f7ff7f7802..b17bba548b7f321f4e534907d5d7f4e761955175 100644 (file)
@@ -32,21 +32,17 @@ _PROTOTYPE(void makelongnames, (void));
 int subtest = 1;
 int superuser;
 
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
+char *MaxName;                 /* Name of maximum length */
 char MaxPath[PATH_MAX];                /* Same for path */
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
+char *ToLongName;              /* Name of maximum +1 length */
 char ToLongPath[PATH_MAX + 1]; /* Same for path, both too long */
 
 int main(int argc, char *argv[])
 {
   int i, m = 0xFFFF;
 
-  sync();
+  start(24);
   if (argc == 2) m = atoi(argv[1]);
-  printf("Test 24 ");
-  fflush(stdout);
-  System("rm -rf DIR_24; mkdir DIR_24");
-  Chdir("DIR_24");
   makelongnames();
   superuser = (geteuid() == 0);
 
@@ -171,13 +167,18 @@ void test24b()
   int i, j;                    /* i = highest open dir count */
   DIR *dirp[OVERFLOW_DIR_NR], *dp;
   struct dirent *dep, *dep1, *dep2;
-  char name[NAME_MAX + 2];     /* buffer for file name, and count */
+  char *name;  /* buffer for file name, and count */
   int dot = 0, dotdot = 0;
+  int max_name_length;
 
   subtest = 2;
 
   System("rm -rf ../DIR_24/*");
 
+  max_name_length = name_max(".");
+  name = malloc(max_name_length + 2);
+  memset(name, '\0', max_name_length + 2);
+
   for (i = 0; i < OVERFLOW_DIR_NR; i++) {
        dirp[i] = opendir("/");
        if (dirp[i] == ((DIR *) NULL)) {
@@ -195,7 +196,7 @@ void test24b()
   System("rm -rf foo; mkdir foo");
   Chdir("foo");
   name[0] = 0;
-  for (i = 0; i <= NAME_MAX; i++) {
+  for (i = 0; i <= max_name_length; i++) {
        if (strcat(name, "X") != name) e(5);
        close(creat(name, 0666));       /* fails once on */
   }                            /* XX..XX, 1 too long */
@@ -211,13 +212,13 @@ void test24b()
                name[strlen(dep->d_name)] += 1; /* 'X' + 1 == 'Y' */
   }
   if (closedir(dp) != 0) e(7);
-  for (i = 1; i <= NAME_MAX; i++) {    /* Check if every length */
+  for (i = 1; i <= max_name_length; i++) {     /* Check if every length */
        if (name[i] != 'Y') e(8);       /* has been seen once. */
   }
 
   /* Check upper and lower bound. */
   if (name[0] != 'X') e(9);
-  if (name[NAME_MAX + 1] != '\0') e(10);
+  if (name[max_name_length + 1] != '\0') e(10);
 
   /* Now check if two simultaniouse open dirs do the same */
   if ((dirp[1] = opendir("foo")) == ((DIR *) NULL)) e(11);
@@ -343,9 +344,15 @@ DIR *dirp;                 /* (`f1', `f3', `f5', `.', `..')  */
 void makelongnames()
 {
   register int i;
+  int max_name_length;
+
+  max_name_length = name_max("."); /* Aka NAME_MAX, but not every FS supports
+                                   * the same length, hence runtime check */
+  MaxName = malloc(max_name_length + 1);
+  ToLongName = malloc(max_name_length + 1 + 1); /* Name of maximum +1 length */
+  memset(MaxName, 'a', max_name_length);
+  MaxName[max_name_length] = '\0';
 
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
   for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
        MaxPath[i++] = '.';
        MaxPath[i] = '/';
@@ -355,9 +362,8 @@ void makelongnames()
   strcpy(ToLongName, MaxName); /* copy them Max to ToLong */
   strcpy(ToLongPath, MaxPath);
 
-  ToLongName[NAME_MAX] = 'a';
-  ToLongName[NAME_MAX + 1] = '\0';     /* extend ToLongName by one too many */
+  ToLongName[max_name_length] = 'a';
+  ToLongName[max_name_length+1] = '\0';/* extend ToLongName by one too many */
   ToLongPath[PATH_MAX - 1] = '/';
   ToLongPath[PATH_MAX] = '\0'; /* inc ToLongPath by one */
 }
-
index d9d2bce6fb2615664bdb14bec5348f9255ce92a1..789f0a43d40149194351cb25c4eb1358d3084f2a 100644 (file)
@@ -29,9 +29,9 @@
 
 int subtest = 1;
 int superuser;
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
+char *MaxName;                 /* Name of maximum length */
 char MaxPath[PATH_MAX];                /* Same for path */
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
+char *ToLongName;              /* Name of maximum +1 length */
 char ToLongPath[PATH_MAX + 1]; /* Same for path, both too long */
 
 _PROTOTYPE(void test25a, (void));
@@ -40,8 +40,6 @@ _PROTOTYPE(void test25c, (void));
 _PROTOTYPE(void test25d, (void));
 _PROTOTYPE(void test25e, (void));
 _PROTOTYPE(void makelongnames, (void));
-_PROTOTYPE(void e, (int number));
-_PROTOTYPE(void quit, (void));
 
 int main(int argc, char *argv[])
 {
@@ -50,8 +48,8 @@ int main(int argc, char *argv[])
 
   sync();
 
-  if (argc == 2) m = atoi(argv[1]);
   start(25);
+  if (argc == 2) m = atoi(argv[1]);
   makelongnames();
   superuser = (geteuid() == 0);
 
@@ -66,7 +64,6 @@ int main(int argc, char *argv[])
        if (m & 020) test25e();
   }
   quit();
-  return 1;
 }
 
 void test25a()
@@ -688,9 +685,15 @@ void test25e()
 void makelongnames()
 {
   register int i;
+  int max_name_length;
+
+  max_name_length = name_max("."); /* Aka NAME_MAX, but not every FS supports
+                                   * the same length, hence runtime check */
+  MaxName = malloc(max_name_length + 1);
+  ToLongName = malloc(max_name_length + 1 + 1); /* Name of maximum +1 length */
+  memset(MaxName, 'a', max_name_length);
+  MaxName[max_name_length] = '\0';
 
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
   for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
        MaxPath[i++] = '.';
        MaxPath[i] = '/';
@@ -700,8 +703,8 @@ void makelongnames()
   strcpy(ToLongName, MaxName); /* copy them Max to ToLong */
   strcpy(ToLongPath, MaxPath);
 
-  ToLongName[NAME_MAX] = 'a';
-  ToLongName[NAME_MAX + 1] = '\0';     /* extend ToLongName by one too many */
+  ToLongName[max_name_length] = 'a';
+  ToLongName[max_name_length+1] = '\0';/* extend ToLongName by one too many */
   ToLongPath[PATH_MAX - 1] = '/';
   ToLongPath[PATH_MAX] = '\0'; /* inc ToLongPath by one */
 }
index 998e9e9afc056dd9ef8713c75ccc02262f32ee4b..e4e455a8fed52ca7276d6a5076b4950623c840ca 100644 (file)
 #define Stat(a,b)     if (stat(a,b) != 0) printf("Can't stat %s\n", a)
 #define Mkfifo(f)     if (mkfifo(f,0777)!=0) printf("Can't make fifo %s\n", f)
 
-int errct = 0;
-int subtest = 1;
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
-char MaxPath[PATH_MAX];                /* Same for path */
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
-char ToLongPath[PATH_MAX + 1]; /* Same for path, both too long */
+#include "common.c"
 
 _PROTOTYPE(void test26a, (void));
 _PROTOTYPE(void test26b, (void));
 _PROTOTYPE(void test26c, (void));
-_PROTOTYPE(void e, (int number));
-_PROTOTYPE(void quit, (void));
 
 int main(int argc, char *argv[])
 {
@@ -39,10 +32,8 @@ int main(int argc, char *argv[])
 
   sync();
   if (argc == 2) m = atoi(argv[1]);
-  printf("Test 26 ");
-  fflush(stdout);
-  System("rm -rf DIR_26; mkdir DIR_26");
-  Chdir("DIR_26");
+
+  start(26);
 
   for (i = 0; i < 10; i++) {
        if (m & 0001) test26a();
@@ -241,33 +232,3 @@ void test26c()
   }
 }
 
-void e(n)
-int n;
-{
-  int err_num = errno;         /* Save in case printf clobbers it. */
-
-  printf("Subtest %d,  error %d  errno=%d: ", subtest, n, errno);
-  errno = err_num;
-  perror("");
-  if (errct++ > MAX_ERROR) {
-       printf("Too many errors; test aborted\n");
-       chdir("..");
-       system("rm -rf DIR*");
-       exit(1);
-  }
-  errno = 0;
-}
-
-void quit()
-{
-  Chdir("..");
-  System("rm -rf DIR_26");
-
-  if (errct == 0) {
-       printf("ok\n");
-       exit(0);
-  } else {
-       printf("%d errors\n", errct);
-       exit(1);
-  }
-}
index a7659cc4ef4e994086017a9a47678c72b0cc69b1..689486b8d864543b86b6b33cd84f03bd259cf912 100644 (file)
 #define System(cmd)    if (system(cmd) != 0) printf("``%s'' failed\n", cmd)
 #define Chdir(dir)     if (chdir(dir) != 0) printf("Can't goto %s\n", dir)
 
-int errct = 0;
-int subtest = 1;
+#include "common.c"
+
 int superuser;
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
+char *MaxName;                 /* Name of maximum length */
 char MaxPath[PATH_MAX];
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
+char *ToLongName;              /* Name of maximum +1 length */
 char ToLongPath[PATH_MAX + 1];
 
 _PROTOTYPE(void test27a, (void));
 _PROTOTYPE(void test27b, (void));
 _PROTOTYPE(void test27c, (void));
 _PROTOTYPE(void makelongnames, (void));
-_PROTOTYPE(void e, (int __n));
-_PROTOTYPE(void quit, (void));
 
 int main(int argc, char *argv[])
 {
   int i, m = 0xFFFF;
 
-  sync();
+  start(27);
   if (argc == 2) m = atoi(argv[1]);
-  printf("Test 27 ");
-  fflush(stdout);
-  System("rm -rf DIR_27; mkdir DIR_27");
-  Chdir("DIR_27");
   superuser = (getuid() == 0);
   makelongnames();
 
@@ -295,9 +289,15 @@ void test27c()
 void makelongnames()
 {
   register int i;
+  int max_name_length;
+
+  max_name_length = name_max("."); /* Aka NAME_MAX, but not every FS supports
+                                   * the same length, hence runtime check */
+  MaxName = malloc(max_name_length + 1);
+  ToLongName = malloc(max_name_length + 1 + 1); /* Name of maximum +1 length */
+  memset(MaxName, 'a', max_name_length);
+  MaxName[max_name_length] = '\0';
 
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
   for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
        MaxPath[i++] = '.';
        MaxPath[i] = '/';
@@ -307,39 +307,9 @@ void makelongnames()
   strcpy(ToLongName, MaxName); /* copy them Max to ToLong */
   strcpy(ToLongPath, MaxPath);
 
-  ToLongName[NAME_MAX] = 'a';
-  ToLongName[NAME_MAX + 1] = '\0';     /* extend ToLongName by one too many */
+  ToLongName[max_name_length] = 'a';
+  ToLongName[max_name_length+1] = '\0';/* extend ToLongName by one too many */
   ToLongPath[PATH_MAX - 1] = '/';
   ToLongPath[PATH_MAX] = '\0'; /* inc ToLongPath by one */
 }
 
-void e(n)
-int n;
-{
-  int err_num = errno;         /* Save in case printf clobbers it. */
-
-  printf("Subtest %d,  error %d  errno=%d: ", subtest, n, errno);
-  errno = err_num;
-  perror("");
-  if (errct++ > MAX_ERROR) {
-       printf("Too many errors; test aborted\n");
-       chdir("..");
-       system("rm -rf DIR*");
-       exit(1);
-  }
-  errno = 0;
-}
-
-void quit()
-{
-  Chdir("..");
-  System("rm -rf DIR_27");
-
-  if (errct == 0) {
-       printf("ok\n");
-       exit(0);
-  } else {
-       printf("%d errors\n", errct);
-       exit(1);
-  }
-}
index b232b3a1cc94a23eb1bf90074cfd29abdb288cb2..0abee297af1599b195fe93f0d01ab34afd023694 100644 (file)
@@ -32,9 +32,9 @@
 
 int subtest = 1;
 int superuser;
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
+char *MaxName;                 /* Name of maximum length */
 char MaxPath[PATH_MAX];
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
+char *ToLongName;              /* Name of maximum +1 length */
 char ToLongPath[PATH_MAX + 1];
 
 _PROTOTYPE(void test28a, (void));
@@ -59,7 +59,6 @@ int main(int argc, char *argv[])
        if (m & 0004) test28c();
   }
   quit();
-  return 1;
 }
 
 void test28a()
@@ -393,9 +392,15 @@ void test28c()
 void makelongnames()
 {
   register int i;
+  int max_name_length;
+
+  max_name_length = name_max("."); /* Aka NAME_MAX, but not every FS supports
+                                   * the same length, hence runtime check */
+  MaxName = malloc(max_name_length + 1);
+  ToLongName = malloc(max_name_length + 1 + 1); /* Name of maximum +1 length */
+  memset(MaxName, 'a', max_name_length);
+  MaxName[max_name_length] = '\0';
 
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
   for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
        MaxPath[i++] = '.';
        MaxPath[i] = '/';
@@ -405,9 +410,8 @@ void makelongnames()
   strcpy(ToLongName, MaxName); /* copy them Max to ToLong */
   strcpy(ToLongPath, MaxPath);
 
-  ToLongName[NAME_MAX] = 'a';
-  ToLongName[NAME_MAX + 1] = '\0';     /* extend ToLongName by one too many */
+  ToLongName[max_name_length] = 'a';
+  ToLongName[max_name_length+1] = '\0';/* extend ToLongName by one too many */
   ToLongPath[PATH_MAX - 1] = '/';
   ToLongPath[PATH_MAX] = '\0'; /* inc ToLongPath by one */
 }
-
index 5e209e1b7db10c9b7ac4ede27f866500751db409..c797ca6e4f2f4c5f7d8ab9afc4d8e8957c128edf 100644 (file)
 #define IS_CLOEXEC(fd) ((fcntl(fd, F_GETFD) & FD_CLOEXEC) == FD_CLOEXEC)
 #define SET_CLOEXEC(fd)        fcntl(fd, F_SETFD, FD_CLOEXEC)
 
-int errct = 0;
-int subtest = 1;
+#include "common.c"
+
 int superuser;
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
-char MaxPath[PATH_MAX];                /* Same for path */
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
-char ToLongPath[PATH_MAX + 1]; /* Same for path, both too long */
 
 _PROTOTYPE(void test29a, (void));
 _PROTOTYPE(void test29b, (void));
 _PROTOTYPE(void test29c, (void));
-_PROTOTYPE(void e, (int number));
-_PROTOTYPE(void quit, (void));
 
 int main(int argc, char *argv[])
 {
@@ -54,10 +48,8 @@ int main(int argc, char *argv[])
 
   sync();
   if (argc == 2) m = atoi(argv[1]);
-  printf("Test 29 ");
-  fflush(stdout);
-  System("rm -rf DIR_29; mkdir DIR_29");
-  Chdir("DIR_29");
+
+  start(29);
   superuser = (geteuid() == 0);
 
   for (i = 0; i < ITERATIONS; i++) {
@@ -210,34 +202,3 @@ void test29c()
 
   System("rm -rf ../DIR_29/*");
 }
-
-void e(n)
-int n;
-{
-  int err_num = errno;         /* Save in case printf clobbers it. */
-
-  printf("Subtest %d,  error %d  errno=%d: ", subtest, n, errno);
-  errno = err_num;
-  perror("");
-  if (errct++ > MAX_ERROR) {
-       printf("Too many errors; test aborted\n");
-       chdir("..");
-       system("rm -rf DIR*");
-       exit(1);
-  }
-  errno = 0;
-}
-
-void quit()
-{
-  Chdir("..");
-  System("rm -rf DIR_29");
-
-  if (errct == 0) {
-       printf("ok\n");
-       exit(0);
-  } else {
-       printf("%d errors\n", errct);
-       exit(1);
-  }
-}
index 49a84d4ef89ece9cbd5eb25b6c3654c48b33269e..1ef2b4543108645d8184ba0d7183f4d65c3c625d 100644 (file)
 #define Chdir(dir)     if (chdir(dir) != 0) printf("Can't goto %s\n", dir)
 #define Stat(a,b)      if (stat(a,b) != 0) printf("Can't stat %s\n", a)
 
-int subtest = 1;
 int superuser;
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
+char *MaxName;                 /* Name of maximum length */
 char MaxPath[PATH_MAX];                /* Same for path */
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
+char *ToLongName;              /* Name of maximum +1 length */
 char ToLongPath[PATH_MAX + 1]; /* Same for path, both too long */
 
 _PROTOTYPE(void test30a, (void));
 _PROTOTYPE(void test30b, (void));
 _PROTOTYPE(void test30c, (void));
 _PROTOTYPE(void makelongnames, (void));
-_PROTOTYPE(void e, (int number));
-_PROTOTYPE(void quit, (void));
 
 int main(int argc, char *argv[])
 {
@@ -286,9 +283,15 @@ void test30c()
 void makelongnames()
 {
   register int i;
+  int max_name_length;
+
+  max_name_length = name_max("."); /* Aka NAME_MAX, but not every FS supports
+                                   * the same length, hence runtime check */
+  MaxName = malloc(max_name_length + 1);
+  ToLongName = malloc(max_name_length + 1 + 1); /* Name of maximum +1 length */
+  memset(MaxName, 'a', max_name_length);
+  MaxName[max_name_length] = '\0';
 
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
   for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
        MaxPath[i++] = '.';
        MaxPath[i] = '/';
@@ -298,9 +301,8 @@ void makelongnames()
   strcpy(ToLongName, MaxName); /* copy them Max to ToLong */
   strcpy(ToLongPath, MaxPath);
 
-  ToLongName[NAME_MAX] = 'a';
-  ToLongName[NAME_MAX + 1] = '\0';     /* extend ToLongName by one too many */
+  ToLongName[max_name_length] = 'a';
+  ToLongName[max_name_length+1] = '\0';/* extend ToLongName by one too many */
   ToLongPath[PATH_MAX - 1] = '/';
   ToLongPath[PATH_MAX] = '\0'; /* inc ToLongPath by one */
 }
-
index 4880eee1c80ad5e21ea352e5030c7382c8b6b6e3..06f26a21df922d1ca05c30c33eccaa7b0675dc67 100644 (file)
 #define Chdir(dir)     if (chdir(dir) != 0) printf("Can't goto %s\n", dir)
 #define Stat(a,b)      if (stat(a,b) != 0) printf("Can't stat %s\n", a)
 
-int subtest = 1;
 int superuser;
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
+char *MaxName;                 /* Name of maximum length */
 char MaxPath[PATH_MAX];                /* Same for path */
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
+char *ToLongName;              /* Name of maximum +1 length */
 char ToLongPath[PATH_MAX + 1]; /* Same for path, both too long */
 
 _PROTOTYPE(void test31a, (void));
@@ -214,9 +213,15 @@ void test31c()
 void makelongnames()
 {
   register int i;
+  int max_name_length;
+
+  max_name_length = name_max("."); /* Aka NAME_MAX, but not every FS supports
+                                   * the same length, hence runtime check */
+  MaxName = malloc(max_name_length + 1);
+  ToLongName = malloc(max_name_length + 1 + 1); /* Name of maximum +1 length */
+  memset(MaxName, 'a', max_name_length);
+  MaxName[max_name_length] = '\0';
 
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
   for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
        MaxPath[i++] = '.';
        MaxPath[i] = '/';
@@ -226,9 +231,8 @@ void makelongnames()
   strcpy(ToLongName, MaxName); /* copy them Max to ToLong */
   strcpy(ToLongPath, MaxPath);
 
-  ToLongName[NAME_MAX] = 'a';
-  ToLongName[NAME_MAX + 1] = '\0';     /* extend ToLongName by one too many */
+  ToLongName[max_name_length] = 'a';
+  ToLongName[max_name_length+1] = '\0';/* extend ToLongName by one too many */
   ToLongPath[PATH_MAX - 1] = '/';
   ToLongPath[PATH_MAX] = '\0'; /* inc ToLongPath by one */
 }
-
index c04b0ca6a632f17d2b073a7e4791279542427e0f..48055abae8e558a6c576f6253abe3164dcc8e303 100644 (file)
 #define Stat(a,b)      if (stat(a,b) != 0) printf("Can't stat %s\n", a)
 #define Creat(f)       if (close(creat(f,0777))!=0) printf("Can't creat %s\n",f)
 
-int errct = 0;
-int subtest = 1;
+#include "common.c"
+
 int superuser;
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
+char *MaxName;                 /* Name of maximum length */
 char MaxPath[PATH_MAX];                /* Same for path */
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
+char *ToLongName;              /* Name of maximum +1 length */
 char ToLongPath[PATH_MAX + 1]; /* Same for path, both too long */
 
 _PROTOTYPE(void test32a, (void));
 _PROTOTYPE(void test32b, (void));
 _PROTOTYPE(void test32c, (void));
 _PROTOTYPE(void makelongnames, (void));
-_PROTOTYPE(void e, (int number));
-_PROTOTYPE(void quit, (void));
 
 int main(int argc, char *argv[])
 {
   int i, m = 0xFFFF;
 
-  sync();
+  start(32);
+
   if (argc == 2) m = atoi(argv[1]);
-  printf("Test 32 ");
-  fflush(stdout);
-  System("rm -rf DIR_32; mkdir DIR_32");
-  Chdir("DIR_32");
   makelongnames();
   superuser = (geteuid() == 0);
 
@@ -54,7 +49,6 @@ int main(int argc, char *argv[])
        if (m & 0004) test32c();
   }
   quit();
-  return 1;
 }
 
 #define BUF_SIZE 1024
@@ -315,9 +309,15 @@ void test32c()
 void makelongnames()
 {
   register int i;
+  int max_name_length;
+
+  max_name_length = name_max("."); /* Aka NAME_MAX, but not every FS supports
+                                   * the same length, hence runtime check */
+  MaxName = malloc(max_name_length + 1);
+  ToLongName = malloc(max_name_length + 1 + 1); /* Name of maximum +1 length */
+  memset(MaxName, 'a', max_name_length);
+  MaxName[max_name_length] = '\0';
 
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
   for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
        MaxPath[i++] = '.';
        MaxPath[i] = '/';
@@ -327,39 +327,8 @@ void makelongnames()
   strcpy(ToLongName, MaxName); /* copy them Max to ToLong */
   strcpy(ToLongPath, MaxPath);
 
-  ToLongName[NAME_MAX] = 'a';
-  ToLongName[NAME_MAX + 1] = '\0';     /* extend ToLongName by one too many */
+  ToLongName[max_name_length] = 'a';
+  ToLongName[max_name_length+1] = '\0';/* extend ToLongName by one too many */
   ToLongPath[PATH_MAX - 1] = '/';
   ToLongPath[PATH_MAX] = '\0'; /* inc ToLongPath by one */
 }
-
-void e(n)
-int n;
-{
-  int err_num = errno;         /* Save in case printf clobbers it. */
-
-  printf("Subtest %d,  error %d  errno=%d: ", subtest, n, errno);
-  errno = err_num;
-  perror("");
-  if (errct++ > MAX_ERROR) {
-       printf("Too many errors; test aborted\n");
-       chdir("..");
-       system("rm -rf DIR*");
-       exit(1);
-  }
-  errno = 0;
-}
-
-void quit()
-{
-  Chdir("..");
-  System("rm -rf DIR_32");
-
-  if (errct == 0) {
-       printf("ok\n");
-       exit(0);
-  } else {
-       printf("%d errors\n", errct);
-       exit(1);
-  }
-}
index d37206f21d6edc23a7eebac1ed99b89da77c20c9..cce4adf69f9da64f2c0c88f53b6fcaed31617a57 100644 (file)
 #define Chmod(a,b)     if (chmod(a,b) != 0) printf("Can't chmod %s\n", a)
 #define Mkfifo(f)      if (mkfifo(f,0777)!=0) printf("Can't make fifo %s\n", f)
 
-int subtest = 1;
 int superuser;                 /* nonzero if uid == euid (euid == 0 always) */
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
+char *MaxName;                 /* Name of maximum length */
 char MaxPath[PATH_MAX];                /* Same for path */
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
+char *ToLongName;              /* Name of maximum +1 length */
 char ToLongPath[PATH_MAX + 1]; /* Same for path, both too long */
 
 _PROTOTYPE(void test33a, (void));
@@ -600,9 +599,15 @@ void test_access()
 void makelongnames()
 {
   register int i;
+  int max_name_length;
+
+  max_name_length = name_max("."); /* Aka NAME_MAX, but not every FS supports
+                                   * the same length, hence runtime check */
+  MaxName = malloc(max_name_length + 1);
+  ToLongName = malloc(max_name_length + 1 + 1); /* Name of maximum +1 length */
+  memset(MaxName, 'a', max_name_length);
+  MaxName[max_name_length] = '\0';
 
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
   for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
        MaxPath[i++] = '.';
        MaxPath[i] = '/';
@@ -612,9 +617,8 @@ void makelongnames()
   strcpy(ToLongName, MaxName); /* copy them Max to ToLong */
   strcpy(ToLongPath, MaxPath);
 
-  ToLongName[NAME_MAX] = 'a';
-  ToLongName[NAME_MAX + 1] = '\0';     /* extend ToLongName by one too many */
+  ToLongName[max_name_length] = 'a';
+  ToLongName[max_name_length+1] = '\0';/* extend ToLongName by one too many */
   ToLongPath[PATH_MAX - 1] = '/';
   ToLongPath[PATH_MAX] = '\0'; /* inc ToLongPath by one */
 }
-
index 81970f28c89c0b6e71781b0a7120b6f6c438e6f9..7776310c94f4892bc6814335b154516c1ef4fff9 100644 (file)
 /* This program uses /etc/passwd and assumes things about it's contents. */
 #define PASSWD_FILE    "/etc/passwd"
 
-int subtest = 1;
 int superuser;
 int I_can_chown;
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
+char *MaxName;                 /* Name of maximum length */
 char MaxPath[PATH_MAX];                /* Same for path */
-char NameTooLong[NAME_MAX + 2];        /* Name of maximum +1 length */
+char *NameTooLong;             /* Name of maximum +1 length */
 char PathTooLong[PATH_MAX + 1];        /* Same for path, both too long */
 
 _PROTOTYPE(void test34a, (void));
@@ -541,22 +540,28 @@ void test34c()
 void makelongnames()
 {
   register int i;
+  int max_name_length;
+
+  max_name_length = name_max("."); /* Aka NAME_MAX, but not every FS supports
+                                   * the same length, hence runtime check */
+  MaxName = malloc(max_name_length + 1);
+  NameTooLong = malloc(max_name_length + 1 + 1); /* Name of maximum +1 length */
+  memset(MaxName, 'a', max_name_length);
+  MaxName[max_name_length] = '\0';
 
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
   for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
        MaxPath[i++] = '.';
        MaxPath[i] = '/';
   }
   MaxPath[PATH_MAX - 1] = '\0';
 
-  strcpy(NameTooLong, MaxName);        /* copy them Max to TooLong */
+  strcpy(NameTooLong, MaxName);        /* copy them Max to ToLong */
   strcpy(PathTooLong, MaxPath);
 
-  NameTooLong[NAME_MAX] = 'a';
-  NameTooLong[NAME_MAX + 1] = '\0';    /* extend NameTooLong by one too many*/
+  NameTooLong[max_name_length] = 'a';
+  NameTooLong[max_name_length+1] = '\0';/* extend ToLongName by one too many */
   PathTooLong[PATH_MAX - 1] = '/';
-  PathTooLong[PATH_MAX] = '\0';        /* inc PathTooLong by one */
+  PathTooLong[PATH_MAX] = '\0';        /* inc ToLongPath by one */
 }
 
 /* Getids returns a valid uid and gid. Is used PASSWD FILE.
index d49fe33959a9f6a2d176b2dbc36d7d41670ff672..b69c68c330201b3c5f6ee99fede5f12dfc6e6082 100644 (file)
 
 #define PASSWD_FILE    "/etc/passwd"
 
-int subtest = 1;
 int I_can_chown;
 int superuser;
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
+char *MaxName;                 /* Name of maximum length */
 char MaxPath[PATH_MAX];                /* Same for path */
-char NameTooLong[NAME_MAX + 2];        /* Name of maximum +1 length */
+char *NameTooLong;             /* Name of maximum +1 length */
 char PathTooLong[PATH_MAX + 1];        /* Same for path, both too long */
 
 _PROTOTYPE(void test35a, (void));
@@ -283,22 +282,28 @@ void test35c()
 void makelongnames()
 {
   register int i;
+  int max_name_length;
+
+  max_name_length = name_max("."); /* Aka NAME_MAX, but not every FS supports
+                                   * the same length, hence runtime check */
+  MaxName = malloc(max_name_length + 1);
+  NameTooLong = malloc(max_name_length + 1 + 1); /* Name of maximum +1 length */
+  memset(MaxName, 'a', max_name_length);
+  MaxName[max_name_length] = '\0';
 
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
   for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
        MaxPath[i++] = '.';
        MaxPath[i] = '/';
   }
   MaxPath[PATH_MAX - 1] = '\0';
 
-  strcpy(NameTooLong, MaxName);        /* copy them Max to TooLong */
+  strcpy(NameTooLong, MaxName);        /* copy them Max to ToLong */
   strcpy(PathTooLong, MaxPath);
 
-  NameTooLong[NAME_MAX] = 'a';
-  NameTooLong[NAME_MAX + 1] = '\0';    /* extend NameTooLong by one too many*/
+  NameTooLong[max_name_length] = 'a';
+  NameTooLong[max_name_length+1] = '\0';/* extend ToLongName by one too many */
   PathTooLong[PATH_MAX - 1] = '/';
-  PathTooLong[PATH_MAX] = '\0';        /* inc PathTooLong by one */
+  PathTooLong[PATH_MAX] = '\0';        /* inc ToLongPath by one */
 }
 
 /* Getids returns a valid uid and gid. Is used PASSWD FILE.
index 463b65f406c370c948aa20e939bb59f0a514e069..21dc41cc60cc6a5897e5c3d2b2bda369b7c49e84 100644 (file)
 #define Chdir(dir)     if (chdir(dir) != 0) printf("Can't goto %s\n", dir)
 #define Stat(a,b)      if (stat(a,b) != 0) printf("Can't stat %s\n", a)
 
-int errct = 0;
-int subtest = 1;
+#include "common.c"
+
 int superuser;
-char MaxName[NAME_MAX + 1];    /* Name of maximum length */
-char MaxPath[PATH_MAX];                /* Same for path */
-char ToLongName[NAME_MAX + 2]; /* Name of maximum +1 length */
-char ToLongPath[PATH_MAX + 1]; /* Same for path, both too long */
 
 _PROTOTYPE(void test36a, (void));
 _PROTOTYPE(void test36b, (void));
 _PROTOTYPE(void test36c, (void));
 _PROTOTYPE(void test36d, (void));
-_PROTOTYPE(void makelongnames, (void));
-_PROTOTYPE(void e, (int number));
-_PROTOTYPE(void quit, (void));
 _PROTOTYPE(int not_provided_option, (int _option));
 _PROTOTYPE(int provided_option, (int _option, int _minimum_value));
 _PROTOTYPE(int variating_option, (int _option, int _minimum_value));
@@ -65,12 +58,8 @@ int main(int argc, char *argv[])
   int i, m = 0xFFFF;
 
   sync();
+  start(36);
   if (argc == 2) m = atoi(argv[1]);
-  printf("Test 36 ");
-  fflush(stdout);
-  System("rm -rf DIR_36; mkdir DIR_36");
-  Chdir("DIR_36");
-  makelongnames();
   superuser = (geteuid() == 0);
 
   for (i = 0; i < ITERATIONS; i++) {
@@ -141,58 +130,6 @@ void test36d()
   System("rm -rf ../DIR_36/*");
 }
 
-void makelongnames()
-{
-  register int i;
-
-  memset(MaxName, 'a', NAME_MAX);
-  MaxName[NAME_MAX] = '\0';
-  for (i = 0; i < PATH_MAX - 1; i++) { /* idem path */
-       MaxPath[i++] = '.';
-       MaxPath[i] = '/';
-  }
-  MaxPath[PATH_MAX - 1] = '\0';
-
-  strcpy(ToLongName, MaxName); /* copy them Max to ToLong */
-  strcpy(ToLongPath, MaxPath);
-
-  ToLongName[NAME_MAX] = 'a';
-  ToLongName[NAME_MAX + 1] = '\0';     /* extend ToLongName by one too many */
-  ToLongPath[PATH_MAX - 1] = '/';
-  ToLongPath[PATH_MAX] = '\0'; /* inc ToLongPath by one */
-}
-
-void e(n)
-int n;
-{
-  int err_num = errno;         /* Save in case printf clobbers it. */
-
-  printf("Subtest %d,  error %d  errno=%d: ", subtest, n, errno);
-  errno = err_num;
-  perror("");
-  if (errct++ > MAX_ERROR) {
-       printf("Too many errors; test aborted\n");
-       chdir("..");
-       system("rm -rf DIR*");
-       exit(1);
-  }
-  errno = 0;
-}
-
-void quit()
-{
-  Chdir("..");
-  System("rm -rf DIR_36");
-
-  if (errct == 0) {
-       printf("ok\n");
-       exit(0);
-  } else {
-       printf("%d errors\n", errct);
-       exit(1);
-  }
-}
-
 int not_provided_option(option)
 int option;
 {
index cb21f1ec3f480686e1e53f6f3143b33e0290dc59..28876abb8be3cb2920d6ecec9d6f2a434a12d0f5 100644 (file)
@@ -17,7 +17,9 @@
 #define SIGS 14
 #define MAX_ERROR 4
 
-int iteration, cumsig, subtest, errct = 0, sig1, sig2;
+#include "common.c"
+
+int iteration, cumsig, sig1, sig2;
 
 int sigarray[SIGS] = {SIGHUP, SIGILL, SIGTRAP, SIGABRT, SIGIOT, 
              SIGFPE, SIGUSR1, SIGSEGV, SIGUSR2, SIGPIPE, SIGALRM,
@@ -64,9 +66,7 @@ _PROTOTYPE(void test37n, (void));
 _PROTOTYPE(void catch15, (int signo));
 _PROTOTYPE(void test37o, (void));
 _PROTOTYPE(void clearsigstate, (void));
-_PROTOTYPE(void quit, (void));
 _PROTOTYPE(void wait_for, (int pid));
-_PROTOTYPE(void e, (int n));
 
 int main(argc, argv)
 int argc;
@@ -76,13 +76,9 @@ char *argv[];
 
   sync();
 
-  if (argc == 2) m = atoi(argv[1]);
-
-  printf("Test 37 ");
-  fflush(stdout);              /* have to flush for child's benefit */
+  start(37);
 
-  system("rm -rf DIR_37; mkdir DIR_37");
-  chdir("DIR_37");
+  if (argc == 2) m = atoi(argv[1]);
 
   for (i = 0; i < ITERATIONS; i++) {
        iteration = i;
@@ -106,7 +102,6 @@ char *argv[];
   }
 
   quit();
-  return(-1);                  /* impossible */
 }
 
 void test37a()
@@ -1001,21 +996,6 @@ void clearsigstate()
   sigprocmask(SIG_UNBLOCK, &sigset_var, (sigset_t *)NULL);
 }
 
-void quit()
-{
-
-  chdir("..");
-  system("rm -rf DIR*");
-
-  if (errct == 0) {
-       printf("ok\n");
-       exit(0);
-  } else {
-       printf("%d errors\n", errct);
-       exit(4);
-  }
-}
-
 void wait_for(pid)
 pid_t pid;
 {
@@ -1041,17 +1021,3 @@ pid_t pid;
   }
 }
 
-void e(n)
-int n;
-{
-  char msgbuf[80];
-
-  sprintf(msgbuf, "Subtest %d,  error %d  errno=%d  ", subtest, n, errno);
-  perror(msgbuf);
-  if (errct++ > MAX_ERROR) {
-       fprintf(stderr, "Too many errors;  test aborted\n");
-       chdir("..");
-       system("rm -rf DIR*");
-       exit(1);
-  }
-}
index d3eae8ec347047f0dab90c5a4d57d4c8a85826f7..b3616b9cc0f37b43fdc9725b948600aa50a67289 100644 (file)
@@ -26,8 +26,8 @@
 #define Chdir(dir)     if (chdir(dir) != 0) printf("Can't goto %s\n", dir)
 #define Stat(a,b)      if (stat(a,b) != 0) printf("Can't stat %s\n", a)
 
-int errct = 0;
-int subtest = 1;
+#include "common.c"
+
 int superuser;
 int signumber = 0;
 
@@ -35,19 +35,15 @@ _PROTOTYPE(void test38a, (void));
 _PROTOTYPE(void test38b, (void));
 _PROTOTYPE(void test38c, (void));
 _PROTOTYPE(void setsignumber, (int _signumber));
-_PROTOTYPE(void e, (int number));
-_PROTOTYPE(void quit, (void));
 
 int main(int argc, char *argv[])
 {
   int i, m = 0xFFFF;
 
   sync();
+  start(38);
+
   if (argc == 2) m = atoi(argv[1]);
-  printf("Test 38 ");
-  fflush(stdout);
-  System("rm -rf DIR_38; mkdir DIR_38");
-  Chdir("DIR_38");
   superuser = (geteuid() == 0);
   umask(0000);
 
@@ -57,7 +53,6 @@ int main(int argc, char *argv[])
        if (m & 0004) test38c();
   }
   quit();
-  return 1;
 }
 
 void test38a()
@@ -736,33 +731,3 @@ int signum;
   signumber = signum;
 }
 
-void e(n)
-int n;
-{
-  int err_num = errno;         /* Save in case printf clobbers it. */
-
-  printf("Subtest %d,  error %d  errno=%d: ", subtest, n, errno);
-  errno = err_num;
-  perror("");
-  if (errct++ > MAX_ERROR) {
-       printf("Too many errors; test aborted\n");
-       chdir("..");
-       system("rm -rf DIR*");
-       exit(1);
-  }
-  errno = 0;
-}
-
-void quit()
-{
-  Chdir("..");
-  System("rm -rf DIR_38");
-
-  if (errct == 0) {
-       printf("ok\n");
-       exit(0);
-  } else {
-       printf("%d errors\n", errct);
-       exit(1);
-  }
-}
index 9287761536bf35a8ce87950390ecf89f71f4778c..31d5ee3e1773f439ff0c686c1309399e85ffcf0f 100644 (file)
@@ -2,38 +2,33 @@
 #include <stdio.h>
 #include <minix/endpoint.h>
 #include <minix/sys_config.h>
+#define MAX_ERROR 1
+#include "common.c"
+
+_PROTOTYPE( void test39a, (void)                                               );
 
 int main(int argc, char *argv[])
 {
-       int g, p;
-
-       printf("Test 39 ");
+  start(39);
+  quit();
+}
 
-       for(g = 0; g <= _ENDPOINT_MAX_GENERATION; g++) {
-               for(p = -MAX_NR_TASKS; p < _NR_PROCS; p++) {
-                       endpoint_t e;
-                       int mg, mp;
-                       e = _ENDPOINT(g, p);
-                       mg = _ENDPOINT_G(e);
-                       mp = _ENDPOINT_P(e);
-                       if(mg != g || mp != p)  {
-                               printf("%d != %d || %d != %d\n", mg, g, mp, p);
-                               return 1;
-                       }
-                       if(g == 0 && e != p) {
-                               printf("%d != %d and g=0\n", e, p);
-                               return 1;
-                       }
-                       if(e == ANY || e == SELF || e == NONE) {
-                               printf("endpoint (%d,%d) is %d; ANY, SELF or NONE\n",
-                                       g, p, e);
-                               return 1;
-                       }
-               }
-       }
+void test39a()
+{
+  int g, p;
 
-       printf("ok\n");
+  subtest = 1;
 
-       return 0;
+  for (g = 0; g <= _ENDPOINT_MAX_GENERATION; g++) {
+       for (p = -MAX_NR_TASKS; p < _NR_PROCS; p++) {
+               endpoint_t ept;
+               int mg, mp;
+               ept = _ENDPOINT(g, p);
+               mg = _ENDPOINT_G(ept);
+               mp = _ENDPOINT_P(ept);
+               if (mg != g || mp != p) e(1);
+               if (g == 0 && ept != p) e(2);
+               if (ept == ANY || ept == SELF || ept == NONE) e(3);
+       }
+  }
 }
-
index aea34051afbe5fe7f08271f412ef61f7c4b459d0..337bacaed538cd0f5f21587f24c3cbc5fb8f48e5 100644 (file)
 #define MAX_ERROR 4
 #define TIMED 0
 
-static volatile int errct;
+#include "common.c"
+
 static volatile int expect_SIGFPE;
 static u64_t i, j, k;
 static jmp_buf jmpbuf_SIGFPE, jmpbuf_main;
 
-static void quit(void)
-{
-       if (errct == 0) {
-               printf("ok\n");
-               exit(0);
-       } else {
-               printf("%d errors\n", errct);
-               exit(1);
-       }
-       assert(0); /* not reachable */
-}
-
 static void err(int line)
 {
        /* print error information */
@@ -272,7 +261,7 @@ static void test(void)
 
 int main(void)
 {
-       printf("Test 53 ");
+       start(53);
 
        /* set up signal handler to deal with div by zero */
        if (setjmp(jmpbuf_main) == 0) {
@@ -287,6 +276,4 @@ int main(void)
 
        /* this was all */
        quit();
-       assert(0); /* not reachable */
-       return -1;
 }