Mic Kaczmarczik <mic@emx.utexas.edu> (02/09/90)
I recently received the following bug report (and fix, thanks Robert!) about papif's handling of the REVERSE filter option. This is just a guess, but I bet that at the time papif was written, LaserWriter II's weren't out yet, so no one had needed to disable page reversal by setting REVERSE to the empty string. :-) Mic Kaczmarczik Unix/VMS Services UT Austin Computation Center mic@emx.utexas.edu ------------------------------------------------------------------- Date: Tue, 6 Feb 90 09:56:19 CST From: root@navier.ae.utexas.edu (Operator) Message-Id: <9002061556.AA19531@navier.ae.utexas.edu> To: mic@emx.utexas.edu Subject: papif not using REVERSE= (null) correctly I found the problem with papif.c. The problem is that when REVERSE is in the environment with no value the variable v is a pointer to a zero length string which was not checked for in the code. Below is the differences. Thanks for all your help. Robert McLay mclay@emx _____ cut here _______________________________________________________________ *** papif.c.orig Tue Feb 6 11:00:58 1990 --- papif.c Sat Feb 3 07:46:47 1990 *************** *** 303,312 **** else log_w("papif: user specified cap.printers: %s not found, ignoring\n",v); if ((v = getenv("REVERSE"))) ! if (access(v, X_OK) == 0) ! psreverse = v; /* good enough I guess */ ! else ! log_w("papif: specified psreverse filter %s not found, ignoring\n",v); if ((v = getenv("PSTEXT"))) if (access(v, X_OK) == 0) pstext = v; --- 303,320 ---- else log_w("papif: user specified cap.printers: %s not found, ignoring\n",v); if ((v = getenv("REVERSE"))) ! { ! if (*v == '\0') ! psreverse = NULL; ! else ! { ! if (access(v, X_OK) == 0) ! psreverse = v; /* good enough I guess */ ! else ! log_w("papif: specified psreverse filter %s not found, ignoring\n", ! v); ! } ! } if ((v = getenv("PSTEXT"))) if (access(v, X_OK) == 0) pstext = v;