Marcela Mašláňová 42434f
diff -up at-3.1.14/at.c.shell at-3.1.14/at.c
Marcela Mašláňová 42434f
--- at-3.1.14/at.c.shell	2013-09-26 16:57:18.126861201 +0200
Marcela Mašláňová 42434f
+++ at-3.1.14/at.c	2013-09-26 16:59:24.069127357 +0200
Marcela Mašláňová 42434f
@@ -62,11 +62,8 @@
Marcela Mašláňová 42434f
 #include <stdlib.h>
Marcela Mašláňová 42434f
 #include <string.h>
Marcela Mašláňová 42434f
 
Marcela Mašláňová 42434f
-#ifdef TM_IN_SYS_TIME
Marcela Mašláňová 42434f
 #include <sys/time.h>
Marcela Mašláňová 42434f
-#else
Marcela Mašláňová 42434f
 #include <time.h>
Marcela Mašláňová 42434f
-#endif
Marcela Mašláňová 42434f
 
Marcela Mašláňová 42434f
 #ifdef HAVE_UNISTD_H
Marcela Mašláňová 42434f
 #include <unistd.h>
Marcela Mašláňová 42434f
@@ -240,6 +237,12 @@ writefile(time_t runtimer, char queue)
Marcela Mašláňová 42434f
     int kill_errno;
Marcela Mašláňová 42434f
     int rc;
Marcela Mašláňová 42434f
     int mailsize = 128;
Marcela Mašláňová 42434f
+    struct timeval tv;
Marcela Mašláňová 42434f
+    struct timezone tz;
Marcela Mašláňová 42434f
+    long int i;
Marcela Mašláňová 42434f
+
Marcela Mašláňová 42434f
+    gettimeofday(&tv, &tz;;
Marcela Mašláňová 42434f
+    srandom(getpid()+tv.tv_usec);
Marcela Mašláňová 42434f
 
Marcela Mašláňová 42434f
 /* Install the signal handler for SIGINT; terminate after removing the
Marcela Mašláňová 42434f
  * spool file if necessary
Marcela Mašláňová 42434f
@@ -450,6 +453,9 @@ writefile(time_t runtimer, char queue)
Marcela Mašláňová 42434f
     fprintf(fp, " || {\n\t echo 'Execution directory "
Marcela Mašláňová 42434f
 	    "inaccessible' >&2\n\t exit 1\n}\n");
Marcela Mašláňová 42434f
 
Marcela Mašláňová 42434f
+    i = random();
Marcela Mašláňová 42434f
+    fprintf(fp, "${SHELL:-/bin/sh} << \'marcinDELIMITER%08lx\'\n", i);
Marcela Mašláňová 42434f
+
Marcela Mašláňová 42434f
     istty = isatty(fileno(stdin));
Marcela Mašláňová 42434f
     if (istty) {
Marcela Mašláňová 42434f
 	fprintf(stderr, "at> ");
Marcela Mašláňová 42434f
@@ -465,7 +471,7 @@ writefile(time_t runtimer, char queue)
Marcela Mašláňová 42434f
     if (istty) {
Marcela Mašláňová 42434f
 	fprintf(stderr, "<EOT>\n");
Marcela Mašláňová 42434f
     }
Marcela Mašláňová 42434f
-    fprintf(fp, "\n");
Marcela Mašláňová 42434f
+    fprintf(fp, "marcinDELIMITER%08lx\n", i);
Marcela Mašláňová 42434f
     if (ferror(fp))
Marcela Mašláňová 42434f
 	panic("Output error");
Marcela Mašláňová 42434f
 
Marcela Mašláňová 42434f
@@ -915,7 +921,7 @@ main(int argc, char **argv)
Marcela Mašláňová 42434f
 	   It also alows a warning diagnostic to be printed.  Because of the
Marcela Mašláňová 42434f
 	   possible variance, we always output the diagnostic. */
Marcela Mašláňová 42434f
 
Marcela Mašláňová 42434f
-	fprintf(stderr, "warning: commands will be executed using /bin/sh\n");
Marcela Mašláňová 42434f
+       /* fprintf(stderr, "warning: commands will be executed using /bin/sh\n"); */
Marcela Mašláňová 42434f
 
Marcela Mašláňová 42434f
 	writefile(timer, queue);
Marcela Mašláňová 42434f
 	break;