home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / print / lj2 / patches.os2 < prev    next >
Text File  |  1993-06-04  |  29KB  |  967 lines

  1. Only in new: ChangeLog
  2. Only in new: lj2-32.def
  3. diff -c old/lj2.c new/lj2.c
  4. *** old/lj2.c    Fri Jun 04 14:03:42 1993
  5. --- new/lj2.c    Fri Jun 04 13:38:22 1993
  6. ***************
  7. *** 1,6 ****
  8. !  /******************************************************************************
  9.    **
  10. !  **   LJ -- A printing utility for the HP LaserJet
  11.    **
  12.    **
  13.    **   This program prints a series of files on the LaserJet printer.  The
  14. --- 1,6 ----
  15. !  /****************************************************************************
  16.    **
  17. !  **   lj -- A printing utility for the HP LaserJet
  18.    **
  19.    **
  20.    **   This program prints a series of files on the LaserJet printer.  The
  21. ***************
  22. *** 8,79 ****
  23.    **   To take advantage of this density, two "pages" of information from
  24.    **   the file are printed on each piece of paper (left and right halves).
  25.    **
  26. !  **   Usage is:       LJ  file1 file2 file3 ...
  27.    **
  28.    **   Where file# is a valid MS-DOS filename, included on the command line.
  29.    **
  30. !  **   Originally written by Joe Barnhart and subsequently modifed by:
  31. !  **     Ray Duncan and Chip Rabinowitz.  This program has been placed in
  32. !  **     the public domain for use without profit.
  33.    **
  34. !  **   Revised 9/86 for the Mark Williams C Programming System,
  35. !  **     Steven Stern, JMB Realty Corp.
  36.    **
  37. !  **   Revised 11/86 for DOS wild card characters in the file name.
  38. !  ****************************************************************************
  39. !  **
  40. !  **   Revised 4/88 for the DATALIGHT C Compiler by Serge Stepanoff,
  41. !  **   STS Enterprises, 5469 Arlene Way, Livermore, CA.
  42. !  **
  43. !  **    The revised code uses the built in file wildcard expansion feature
  44. !  **    of DATALIGHT C, and makes use of some additional flags to
  45. !  **    turn off the Header line, optionally use the 7 point
  46. !  **    Prestige Elite font, and ssome oher features.  Typing "lj2" with
  47. !  **    no parameters will produce a short users' explanaion.
  48. !  **
  49. !  **    Program has been checked out on an OKIDATA
  50. !  **    LASERLINE printer (HP Laserjet compatible).
  51. !  *****************************************************************************
  52. !  ** Revised 10/16/89 by Jim Derr for the Turbo C 2.0 Compiler.
  53. !  ** Uses the wildargs obj module for file wild card expansion.
  54. !  ** Corrected some anomalies in the code that was causing invalid pages breaks.
  55. !  ** Added the -s command line option that will shade every other line on the
  56. !  ** printout for readability.
  57. !  *****************************************************************************
  58. !  ** Revised 1/11/91 by Jim Derr.
  59. !  ** added -l option to specify number of lines per page to print.
  60. !  ** added -i options to ignore formfeed characters.
  61. !  ** added -d option to allow for duplex printing.
  62. !  **          (Note: when printing duplex only one file at a time may be
  63. !  **           specified on the command line)
  64. !  *****************************************************************************
  65. !  ** Revised 7/31/92 by Mark Polly
  66. !  ** compiled under OS/2 2.0 using C set/2.
  67. !  ** removed the message "printing page nn, line nn to make it look good under
  68. !  ** IBM's Workframe
  69. !  **/
  70.   
  71.   #include <stdio.h>
  72.   #include <time.h>
  73.   #include <ctype.h>
  74.   #include <fcntl.h>
  75.   
  76.   int     MAXLINE=66;        /* maximum lines per page on LaserJet */
  77.   int     MAXLINE_RESET=66;  /* maximum lines per page on LaserJet */
  78.   #define MAXVERT 69         /* maximum lines per page on LaserJet */
  79.   
  80. !  FILE *lp; 
  81.   
  82.   int line_no = 1;
  83.   int pagenum;
  84.   
  85. ! FILE *fp;               /* FILE pointer for the file to be printed */
  86. ! int  hdrflag;        /* Header print suppress flag */
  87. ! int  pgflag;        /* Page separator flag */
  88. ! int  tab = 4;        /* default value of one tab stop */
  89. ! int  pgside;        /* left/right half of page indicator  */
  90.   int  psprint = 0;   /* proportional using Helv 6 pt. */
  91.   int  shade_it = 0;  /* shade every other line */
  92.   int  book = 0;      /* indent left 6 additional spaces for punching*/
  93. --- 8,61 ----
  94.    **   To take advantage of this density, two "pages" of information from
  95.    **   the file are printed on each piece of paper (left and right halves).
  96.    **
  97. !  **   Usage is:       lj  file1 file2 file3 ...
  98.    **
  99.    **   Where file# is a valid MS-DOS filename, included on the command line.
  100.    **
  101. !  **   Originally written by Joe Barnhart and subsequently modifed by
  102. !  **   Ray Duncan and Chip Rabinowitz.  This program has been placed in
  103. !  **   the public domain for use without profit.
  104.    **
  105. !  **   See the ChangeLog for update information.
  106.    **
  107. !  ****************************************************************************/
  108.   
  109.   #include <stdio.h>
  110. + #include <stdlib.h>
  111. + #include <string.h>
  112.   #include <time.h>
  113.   #include <ctype.h>
  114.   #include <fcntl.h>
  115.   
  116. + #ifdef __STDC__
  117. + # define _PROTO(x) x
  118. + #else
  119. + # define _PROTO(x) ()
  120. + #endif
  121. + int  printfile _PROTO((char  *filename));
  122. + int  printpage _PROTO((void));
  123. + void header    _PROTO((char  *filename,int  pagenum));
  124. + void timestamp _PROTO((char  *timestr));
  125. + void datestamp _PROTO((char  *datestr));
  126. + void dovert    _PROTO((void));
  127. + void usage     _PROTO((void));
  128. + void shade     _PROTO((void));
  129.   int     MAXLINE=66;        /* maximum lines per page on LaserJet */
  130.   int     MAXLINE_RESET=66;  /* maximum lines per page on LaserJet */
  131.   #define MAXVERT 69         /* maximum lines per page on LaserJet */
  132.   
  133. ! FILE *fp;               /* FILE pointer for the file to be printed */
  134. ! FILE *lp = stdout;
  135.   
  136.   int line_no = 1;
  137.   int pagenum;
  138.   
  139. ! int  hdrflag;     /* Header print suppress flag */
  140. ! int  pgflag;      /* Page separator flag */
  141. ! int  tab = 4;     /* default value of one tab stop */
  142. ! int  pgside;      /* left/right half of page indicator  */
  143.   int  psprint = 0;   /* proportional using Helv 6 pt. */
  144.   int  shade_it = 0;  /* shade every other line */
  145.   int  book = 0;      /* indent left 6 additional spaces for punching*/
  146. ***************
  147. *** 95,205 ****
  148.   char *argv[];
  149.   {
  150.   int filenum;
  151. ! char fname[70];
  152.   int first;
  153. - int jim;
  154. -    if (argc <= 1)
  155. -       {
  156. -       usage();
  157. -       exit(1);
  158. -       }
  159.   
  160.   
  161. !   lp = fopen("PRN","w+");
  162.   
  163. - /* initialize the LaserJet for landscape printing */
  164. -    fprintf( lp,"\033E\033&l1O\033(s17H\033&l5.14C\033&l70F\033&l5E" );
  165.      for (first = 1; first < argc; first++)  {
  166. !       if (*argv[first] != '/' && *argv[first] != '-') /* check for flags */
  167. !          break;                    /* and exit if none */
  168.         argv[first]++;
  169. !       switch (tolower(*argv[first]))  {
  170. !          case 'e':        /* Prestige Elite 7 point font */
  171. !             psprint = 1;
  172. !             maxcol=104;
  173. !             fprintf(lp,"\033&l1O\033(0U\033(s1p6vsb4T");
  174. !             break;
  175. !          case 'h':        /* suppress headers flag */
  176. !             hdrflag++;
  177. !             MAXLINE=69;
  178. !             MAXLINE_RESET=69;
  179. !             break;
  180. !          case 't':        /* Horizontal tab value */
  181. !             tab = atoi(++argv[first]);
  182. !             if (tab < 1 || tab > 8)  {
  183. !                 printf("Invalid tab value specified -- defaulting to 8\n");
  184. !                 tab = 8;
  185. !                 }
  186. !             break;
  187. !          case 'l':
  188. !             MAXLINE = atoi(++argv[first]);
  189. !             if (MAXLINE < 1 || MAXLINE > MAXLINE_RESET)  {
  190. !                 printf("Invalid lines/page value specified -- defaulting to MAX\n");
  191. !                 MAXLINE = MAXLINE_RESET;
  192. !                 }
  193. !             break;
  194. !          case 'p':      /* suppress page eject between files */
  195. !             pgflag++;
  196. !             break;
  197. !          case 's':
  198. !             shade_it++;
  199. !             break;
  200. !          case 'n':
  201. !             numbers++;
  202. !             break;
  203. !          case 'b':
  204. !             book++;
  205. !             maxcol=79;
  206. !             break;
  207. !          case 'd':
  208. !             duplex=1;
  209. !             break;
  210. !          case 'i':
  211. !             formfeed++;
  212. !             break;
  213. !          default:
  214. !             printf("Invalid Flag Specified ('%s') -- ignored.....\n",
  215. !                     --argv[first]);
  216. !             break;
  217.            }
  218.         }
  219. !    printf("Lines per page set to %d\n",MAXLINE);
  220.   
  221.      if(duplex) {
  222.        if((argc - 1) > first) {
  223. !         printf("Only one file at a time may be printed when using DUPLEX mode.\n");
  224.           exit(1);
  225.        }
  226.      }
  227.   
  228. !    for(filenum = first; filenum < argc; filenum++ )
  229. !       {
  230. !          copyname(fname, argv[filenum]);
  231. !          fp = fopen(fname ,"r");
  232. !          if( fp == NULL )
  233. !             {
  234. !             printf( "File %s doesn't exist.\n", fname );
  235. !             }
  236. !          else
  237. !             {
  238. !             printf( "Now printing %s\n", fname );
  239. !             printfile( fname );
  240. !             fclose( fp );
  241. !             }
  242. !       }    /* of loop through run-time args */
  243. ! /*
  244. !    if (pgflag & pgside)
  245. !     fputc('\f', lp);
  246. ! */
  247. !    fprintf( lp, "\r\033E" );      /* clear LaserJet */
  248. !    fclose(lp);
  249.   
  250.   
  251.   }
  252.   
  253.   /*************************************************************************
  254. --- 77,183 ----
  255.   char *argv[];
  256.   {
  257.   int filenum;
  258. ! char *fname;
  259.   int first;
  260.   
  261. + #ifdef __EMX__
  262. +    _wildcard (&argc, &argv);
  263. + #endif
  264.   
  265. !    if (argc <= 1) usage();
  266.   
  267.      for (first = 1; first < argc; first++)  {
  268. !       if (*argv[first] != '-') /* check for flags */
  269. !          break;               /* and exit if none */
  270.         argv[first]++;
  271. !       switch (tolower(*argv[first])) {
  272. !       case 'e':      /* Helv proportional font */
  273. !          psprint = 1;
  274. !          maxcol=104;
  275. !          break;
  276. !       case 'h':      /* suppress headers flag */
  277. !          hdrflag++;
  278. !       MAXLINE=69;
  279. !       MAXLINE_RESET=69;
  280. !          break;
  281. !       case 't':      /* Horizontal tab value */
  282. !          tab = atoi(++argv[first]);
  283. !          if (tab < 1 || tab > 8) {
  284. !              fprintf(stderr, "Invalid tab value specified\n"); /* -- defaulting to 8\n"); */
  285. !              /* tab = 8; */
  286. !             exit(1);
  287.            }
  288. +          break;
  289. +       case 'l':
  290. +          MAXLINE = atoi(++argv[first]);
  291. +          if (MAXLINE < 1 || MAXLINE > MAXLINE_RESET) {
  292. +              fprintf(stderr, "Invalid lines/page value specified\n"); /*  -- defaulting to MAX\n"); */
  293. +             /* MAXLINE = MAXLINE_RESET; */
  294. +             exit(1);
  295. +          }
  296. +          break;
  297. +       case 'p':      /* suppress page eject between files */
  298. +          pgflag++;
  299. +          break;
  300. +       case 's':
  301. +          shade_it++;
  302. +          break;
  303. +       case 'n':
  304. +          numbers++;
  305. +          break;
  306. +       case 'b':
  307. +          book++;
  308. +          maxcol=79;
  309. +          break;
  310. +       case 'd':
  311. +          duplex=1;
  312. +          break;
  313. +       case 'i':
  314. +          formfeed++;
  315. +          break;
  316. +       default:
  317. +          fprintf(stderr, "Invalid Flag Specified ('%s')\n",  /* -- ignored.....\n", */
  318. +                --argv[first]);
  319. +          usage();
  320.         }
  321. !    }
  322.   
  323.      if(duplex) {
  324.        if((argc - 1) > first) {
  325. !         fprintf(stderr, "Only one file at a time may be printed when using DUPLEX mode.\n");
  326.           exit(1);
  327.        }
  328.      }
  329.   
  330. !    fprintf(stderr, "Lines per page set to %d\n",MAXLINE);
  331.   
  332. +    for(filenum = first; filenum < argc; filenum++ ) {
  333. +       fp = fopen(fname = argv[filenum], "r");
  334. +       if( fp == NULL ) {
  335. +          fprintf(stderr,  "File %s doesn't exist.\n", fname );
  336. +       }
  337. +       else {
  338. +          fprintf(stderr,  "Now printing %s\n", fname );
  339. +          if (first) {   /* initialize the LaserJet for landscape, etc. */
  340. +             fprintf( lp,"\033E\033&l1O\033(s17H\033&l5.14C\033&l70F\033&l5E" );
  341. +             if (psprint)
  342. +                fprintf(lp,"\033&l1O\033(0U\033(s1p6vsb4T");
  343. +             first = 0;
  344. +          }
  345. +          printfile( fname );
  346. +          fclose( fp );
  347. +       }
  348. +    }    /* of loop through run-time args */
  349.   
  350. +    if (first == 0) {             /* we found a file */
  351. +       if (pgflag && pgside)
  352. +          fputc('\f', lp);
  353. +       fprintf( lp, "\r\033E" );      /* clear LaserJet */
  354. +       if (lp != stdout)
  355. +          fclose(lp);
  356. +         fputc('\n', stderr);
  357. +    }
  358. +    return(0);
  359.   }
  360.   
  361.   /*************************************************************************
  362. ***************
  363. *** 214,319 ****
  364.      int retval = 0;
  365.      int printed = 0;
  366.      int pass=0;
  367. !    char c2;
  368.      int f_feed=0;
  369.      int phys_pages=0;
  370.      int plus=1;
  371. -    int z;
  372. -    pagenum=1;
  373.   
  374.   do_it_again:
  375. !    while( (feof(fp)==0) && (retval==0) )
  376. !       {
  377.         f_feed=0;
  378. !       if (pgside == 0)  {
  379. !          printed = 0;
  380. !          c2 = fgetc(fp);
  381. !          if(feof(fp)) break;
  382. !          switch (c2) {
  383. !             case EOF:
  384. !             case '\377':
  385. !             case '\032':
  386. !                 retval = -1;
  387. !                 break;
  388. !             default:
  389. !                 printed=1;
  390. !                 if(do_print) dovert();
  391. !                 if(psprint && do_print)
  392. !                    fprintf(lp,"\033&a0r0c120m0L\r");
  393. !                 else if(book && do_print)
  394. !                    fprintf(lp, "\033&a0r0c85m7L\r"); /* set LaserJet to left half */
  395. !                 else if(do_print)
  396. !                    fprintf(lp, "\033&a0r0c85m0L\r"); /* set LaserJet to left half */
  397. !                 if(shade_it && do_print) shade();
  398. !                 ungetc(c2,fp);
  399. !                 header(filename, pagenum++);       /* title top of page */
  400. !                 retval = printpage();                 /* print one page */
  401. !                 pgside ^= 1;
  402. !          }
  403. !       }
  404. !       if(feof(fp)==0 && retval==0)
  405. !          {                                  /* if more to print... */
  406. !          if(psprint && do_print)
  407. !             fprintf(lp,"\033&a0r0c243m123L\r");
  408. !          else if(book && do_print)
  409. !             fprintf(lp, "\033&a0r0c175m97L\r");    /* LaserJet to right half */
  410. !          else if(do_print)
  411. !             fprintf(lp, "\033&a0r0c175m90L\r");    /* LaserJet to right half */
  412. !          c2 = fgetc(fp);
  413.            if(feof(fp)) break;
  414.            switch (c2) {
  415. !             case EOF:
  416. !             case '\377':
  417. !             case '\032':
  418. !                 retval = -1;
  419. !                 break;
  420. !             default:
  421. !                 ungetc(c2,fp);
  422. !                 header(filename, pagenum++);          /* title top of page */
  423. !                 retval = printpage();                 /* print one page */
  424. !                 pgside ^= 1;
  425. !          }
  426. !       }
  427. !       if (pgside == 0 && printed && do_print) {
  428. !          fputc('\f', lp);
  429. !          f_feed=1;
  430. !       }
  431. !       else if (pgflag == 0 && printed && do_print)  {
  432. !          fputc('\f', lp);
  433. !          pgside = 0;
  434. !          f_feed=1;
  435. !          }
  436. !       if(f_feed) {
  437. !         if(plus)
  438. !             ++phys_pages;
  439. !         else
  440. !             --phys_pages;
  441. !       }
  442. !       if(duplex) do_print ^= 1;
  443. !       }
  444. !       if(duplex) {
  445. !         if(pass) {
  446. !             while(phys_pages) {
  447. !                 fputc('\f',lp);
  448. !                 --phys_pages;
  449.               }
  450. !             return(0);
  451. !         }
  452. !         plus=0;
  453. !         if(!f_feed && retval == 0) fputc('\f',lp);
  454. !         fflush(lp);
  455. !         ++pass;
  456. !         rewind(fp);
  457. !         retval=0;
  458. !         pagenum=1;
  459. !         do_print = 0;
  460. !         printf("\nFlip the paper and press any key when ready\n");
  461. !         z = getchar();
  462. !         goto do_it_again;
  463. !       }
  464.      return(0);
  465.   }
  466.   
  467. --- 192,291 ----
  468.      int retval = 0;
  469.      int printed = 0;
  470.      int pass=0;
  471. !    int c2;
  472.      int f_feed=0;
  473.      int phys_pages=0;
  474.      int plus=1;
  475.   
  476.   do_it_again:
  477. !    pagenum=1;
  478. !    while( (feof(fp)==0) && (retval==0) ) {
  479.         f_feed=0;
  480. !       if (pgside == 0) {
  481. !          printed = 0;
  482. !          c2 = fgetc(fp);
  483.            if(feof(fp)) break;
  484.            switch (c2) {
  485. !          case EOF:
  486. !          case '\032':
  487. !             retval = -1;
  488. !             break;
  489. !          default:
  490. !             printed=1;
  491. !             if(do_print) {
  492. !                     dovert();
  493. !                 if(psprint)
  494. !                    fprintf(lp,"\033&a0r0c128m0L\r");
  495. !                 else if(book)
  496. !                    fprintf(lp, "\033&a0r0c85m7L\r"); /* set LaserJet to left half */
  497. !                 else
  498. !                    fprintf(lp, "\033&a0r0c85m0L\r"); /* set LaserJet to left half */
  499. !                 if(shade_it && do_print)
  500. !                         shade();
  501. !                 }
  502. !             ungetc(c2,fp);
  503. !             header(filename, pagenum++);       /* title top of page */
  504. !             retval = printpage();                 /* print one page */
  505. !             pgside ^= 1;
  506. !          }
  507. !       }
  508. !       if(feof(fp)==0 && retval==0) {      /* if more to print... */
  509. !             if (do_print) {
  510. !                 if(psprint)
  511. !                 fprintf(lp,"\033&a0r0c255m131L\r");
  512. !              else if(book)
  513. !                 fprintf(lp, "\033&a0r0c175m97L\r");    /* LaserJet to right half */
  514. !              else
  515. !                 fprintf(lp, "\033&a0r0c175m90L\r");    /* LaserJet to right half */
  516.               }
  517. !          c2 = fgetc(fp);
  518. !          if(feof(fp)) break;
  519. !          switch (c2) {
  520. !          case EOF:
  521. !          case '\032':
  522. !             retval = -1;
  523. !             break;
  524. !          default:
  525. !             ungetc(c2,fp);
  526. !             header(filename, pagenum++);          /* title top of page */
  527. !             retval = printpage();                 /* print one page */
  528. !             pgside ^= 1;
  529. !          }
  530. !       }
  531. !       if (printed && do_print && (pgflag == 0 || pgside == 0)) {
  532. !          fputc('\f', lp);
  533. !          pgside = 0;
  534. !          f_feed = 1;
  535. !          if(plus)
  536. !             ++phys_pages;
  537. !          else
  538. !             --phys_pages;
  539. !       }
  540. !       if(duplex) do_print ^= 1;
  541. !    }
  542. !    if(duplex) {
  543. !       if(pass) {
  544. !          while(phys_pages) {
  545. !             fputc('\f',lp);
  546. !             --phys_pages;
  547. !          }
  548. !          return(0);
  549. !       }
  550. !       plus=0;
  551. !       if(!f_feed && retval == 0)
  552. !          fputc('\f',lp);
  553. !       fflush(lp);
  554. !       ++pass;
  555. !       rewind(fp);
  556. !       retval=0;
  557. !       do_print = 0;
  558. !       pgside = 0;
  559. !       fprintf(stderr, "\nFlip the paper and press any key when ready\n");
  560. !       getchar();
  561. !       goto do_it_again;
  562. !    }
  563.      return(0);
  564.   }
  565.   
  566. ***************
  567. *** 326,332 ****
  568.   
  569.   printpage()
  570.   {
  571. !    char c;
  572.      int line,col;
  573.      static int cont = 0;
  574.      static char *cont1 = "---->";
  575. --- 298,304 ----
  576.   
  577.   printpage()
  578.   {
  579. !    int c;
  580.      int line,col;
  581.      static int cont = 0;
  582.      static char *cont1 = "---->";
  583. ***************
  584. *** 339,419 ****
  585.         cont = 0;
  586.         }
  587.   
  588. !    while( line < MAXLINE )
  589. !       {
  590. !       c = fgetc(fp);
  591. !       if(feof(fp)) return(-1);
  592.   
  593. !       if(col>maxcol)
  594. !          {
  595.            line++;
  596. !          switch(c)
  597. !             {
  598. !             case '\n':
  599. !             case '\r':
  600. !             case '\f':
  601. !             case EOF:
  602. !             case '\377':
  603. !             case '\032':
  604. !                break;
  605. !             default:
  606. !                if(line >= MAXLINE)
  607. !                   {
  608. !                   cont = 1;
  609. !                   ungetc(c,fp);
  610. !                   return(0);
  611. !                   }
  612. !                if(do_print) fprintf(lp,"\n%s",cont1);
  613. !                col = strlen(cont1);
  614. !                break;
  615.               }
  616. !          }
  617.   
  618.         if(col == 0) {
  619. !  /*********************************************/
  620. !  /* removed the following lines to make it work good under IBM's Workframe  *
  621. !  *         if(do_print) {
  622. !  *             printf("Printing page %4.4d line %4.4d\r",pagenum-1,line);
  623. !  *         }
  624. !  *         else {
  625. !  *             printf("Skipping page %4.4d line %4.4d\r",pagenum-1,line);
  626. !  *         }
  627. !  */
  628. !           if(numbers) {
  629. !               if(do_print) fprintf(lp,"%4.4d:",line_no);
  630. !               col=5;
  631. !           }
  632. !           ++line_no;
  633. !       }
  634. !       switch(c)
  635. !          {
  636. !          case '\n':           /* newline found */
  637. !             col = 0;          /* zero column and */
  638. !             line++;           /* advance line count */
  639. !             if( line < MAXLINE )
  640. !                if(do_print) fprintf(lp,"\n");
  641. !             break;
  642. !          case '\r':           /* CR found */
  643. !             break;            /* discard it */
  644. !          case '\t':           /* TAB found */
  645. !             do
  646. !                if(do_print) fputc(' ',lp);
  647. !             while ( (++col % tab) != 0 );
  648. !             break;
  649. !          case '\f':                      /* Page break or */
  650. !             if(formfeed) break;
  651. !             if(line != 0)
  652. !                 line = MAXLINE;      /* force termination of loop */
  653. !             break;
  654. !          case EOF:            /* EOF mark */
  655. !          case '\377':         /* EOF mark */
  656. !          case '\032':         /* EOF mark */
  657. !             return(-1);
  658. !          default:              /* no special case */
  659. !             if(do_print) fputc(c,lp);       /* print character */
  660. !             col++;
  661. !             break;
  662.         }
  663.      }
  664.      return(0);
  665. --- 311,381 ----
  666.         cont = 0;
  667.         }
  668.   
  669. !    while( line < MAXLINE ) {
  670. !       c = fgetc(fp);
  671. !       if(feof(fp)) return(-1);
  672.   
  673. !       if(col>maxcol) {
  674.            line++;
  675. !          switch(c) {
  676. !          case '\n':
  677. !          case '\r':
  678. !          case '\f':
  679. !          case EOF:
  680. !          case '\032':
  681. !             break;
  682. !          default:
  683. !             if(line >= MAXLINE) {
  684. !                cont = 1;
  685. !                ungetc(c,fp);
  686. !                return(0);
  687.               }
  688. !             if(do_print) fprintf(lp,"\n%s",cont1);
  689. !             col = strlen(cont1);
  690. !             break;
  691. !          }
  692. !       }
  693.   
  694.         if(col == 0) {
  695. !          if(do_print) {
  696. !             fprintf(stderr, "Printing page %4.4d line %4.4d\r",pagenum-1,line);
  697. !          }
  698. !          else {
  699. !             fprintf(stderr, "Skipping page %4.4d line %4.4d\r",pagenum-1,line);
  700. !          }
  701. !          if(numbers) {
  702. !             if(do_print) fprintf(lp,"%4.4d:",line_no);
  703. !             col=5;
  704. !          }
  705. !          ++line_no;
  706. !       }
  707. !       switch(c) {
  708. !       case '\n':           /* newline found */
  709. !          col = 0;          /* zero column and */
  710. !          line++;           /* advance line count */
  711. !          if( line < MAXLINE )
  712. !             if(do_print) fprintf(lp,"\n");
  713. !          break;
  714. !       case '\r':           /* CR found */
  715. !          break;            /* discard it */
  716. !       case '\t':           /* TAB found */
  717. !          do {
  718. !             if(do_print) fputc(' ',lp);
  719. !          } while ( (++col % tab) != 0 );
  720. !          break;
  721. !       case '\f':                      /* Page break or */
  722. !          if(formfeed) break;
  723. !          if(line != 0)
  724. !             line = MAXLINE;      /* force termination of loop */
  725. !             break;
  726. !       case EOF:            /* EOF mark */
  727. !       case '\032':         /* EOF mark */
  728. !          return(-1);
  729. !       default:              /* no special case */
  730. !          if(do_print) fputc(c,lp);       /* print character */
  731. !          col++;
  732. !          break;
  733.         }
  734.      }
  735.      return(0);
  736. ***************
  737. *** 426,452 ****
  738.   
  739.   *************************************************************************/
  740.   
  741. ! header( filename, pagenum )
  742.   char *filename;
  743.   int pagenum;
  744.   {
  745.      char datestr[11], timestr[11];
  746. !    if (hdrflag)  {
  747. !       return;        /* skip if flag set */
  748.         }
  749.      timestamp(timestr);
  750.      datestamp(datestr);
  751. !    if(do_print) fprintf(lp,"\033&d0D");
  752. !    if(book && do_print)
  753. !        fprintf(lp, "File: %-40s%s   %s  --  Page: %03d \n\n",
  754. !           filename,datestr,timestr,pagenum);
  755. !     else if(do_print)
  756. !        fprintf(lp, "File: %-40s%s   %s  --  Page: %03d       \n\n",
  757.             filename,datestr,timestr,pagenum);
  758. !    if(do_print) fprintf(lp,"\033&d@");
  759.   }
  760.   
  761. ! timestamp( timestr )
  762.   char   *timestr;
  763.   {
  764.      struct tm *tod;
  765. --- 388,415 ----
  766.   
  767.   *************************************************************************/
  768.   
  769. ! void header( filename, pagenum )
  770.   char *filename;
  771.   int pagenum;
  772.   {
  773.      char datestr[11], timestr[11];
  774. !    if (hdrflag || !do_print) {
  775. !       return;     /* skip if flag set */
  776.         }
  777.      timestamp(timestr);
  778.      datestamp(datestr);
  779. !    fprintf(lp,"\033&d0D");
  780. !    if(book)
  781. !       fprintf(lp, "File: %-40s%s   %s  --  Page: %03d \n\n",
  782. !         filename,datestr,timestr,pagenum);
  783. !     else
  784. !       fprintf(lp, "File: %-40s%s   %s  --  Page: %03d       \n\n",
  785.             filename,datestr,timestr,pagenum);
  786. !    fprintf(lp,"\033&d@");
  787.   }
  788.   
  789. ! void timestamp( timestr )
  790.   char   *timestr;
  791.   {
  792.      struct tm *tod;
  793. ***************
  794. *** 457,463 ****
  795.      return;
  796.   }
  797.   
  798. ! datestamp( datestr )
  799.   char  *datestr;
  800.   {
  801.      struct tm *tod;
  802. --- 420,426 ----
  803.      return;
  804.   }
  805.   
  806. ! void datestamp( datestr )
  807.   char  *datestr;
  808.   {
  809.      struct tm *tod;
  810. ***************
  811. *** 465,471 ****
  812.      tt = time(NULL);
  813.      tod = localtime(&tt);
  814.      sprintf(datestr,"%02d/%02d/%02d", tod->tm_mon + 1, tod->tm_mday,
  815. !     tod->tm_year + 1900);
  816.      return;
  817.   }
  818.   
  819. --- 428,434 ----
  820.      tt = time(NULL);
  821.      tod = localtime(&tt);
  822.      sprintf(datestr,"%02d/%02d/%02d", tod->tm_mon + 1, tod->tm_mday,
  823. !    tod->tm_year + 1900);
  824.      return;
  825.   }
  826.   
  827. ***************
  828. *** 476,540 ****
  829.   
  830.   *************************************************************************/
  831.   
  832. ! dovert()
  833.   {
  834.      int line = 1;
  835.   
  836.      if(psprint)
  837. !         fprintf(lp,"\033&a0r0c123m121L\r|");
  838.      else
  839. !         fprintf(lp,"\033&a0r0c90m88L\r|");
  840.   
  841.      while(line++ < MAXVERT) fprintf(lp,"\n|");
  842.   }
  843.   
  844.   /*************************************************************************
  845.   
  846. ! copyname
  847. !     copy a file name converting to upper case.
  848.   
  849.   *************************************************************************/
  850.   
  851. ! copyname(to, from)
  852. ! char *to, *from;
  853. ! {
  854. !     while (*from)
  855. !         *to++ = toupper(*from++);
  856. !     *to = 0;
  857. ! }
  858. ! /************************************************************************/
  859. ! usage()
  860.   {
  861. !     printf("\nUSAGE:\n\n");
  862. !     printf("C>LJ2 [flags] filename1 [filename2 ..........]\n");
  863. !     printf("\tItems shown in brackets are optional.");
  864. !     printf("\n\n\tFilename(s) may include wildcards");
  865. !     printf("\n\n\tFlags are:\n");
  866. !     printf("\t\t-e (or /e) select Helv proportional 6 PT font\n");
  867. !     printf("\t\t-h (or /h) suppress page headers\n");
  868. !     printf("\t\t-tx (or /tx) set tab stop value (where x is 1 to 8)\n");
  869. !     printf("\t\t-p (or /p) do not leave blank half pages between files\n");
  870. !     printf("\t\t-s (or /s) shade every other line\n");
  871. !     printf("\t\t-n (or /n) print line numbers\n");
  872. !     printf("\t\t-b (or /b) indent for punching\n");
  873. !     printf("\t\t-d (or /d) for duplex printing\n");
  874. !     printf("\t\t-lxx (or /lxx) set lines/page to x(where x is 1 to 66)\n");
  875. !     printf("\t\t-i (or /l) ignore formfeed characters\n");
  876.   }
  877.   
  878.   
  879. ! shade()
  880.   {
  881. !     int i;
  882. !     fprintf (lp, "\033&f0S\033*p0x0Y\033*c3300a32b10G");
  883. !     for (i=1; i <= 35; i++)
  884. !         fprintf (lp, "\033*c2P\033&a+2R");
  885. !     fprintf (lp, "\033&f1S");
  886.   
  887.   }
  888. --- 439,487 ----
  889.   
  890.   *************************************************************************/
  891.   
  892. ! void dovert()
  893.   {
  894.      int line = 1;
  895.   
  896.      if(psprint)
  897. !       fprintf(lp,"\033&a0r0c131m129L\r|");
  898.      else
  899. !       fprintf(lp,"\033&a0r0c90m88L\r|");
  900.   
  901.      while(line++ < MAXVERT) fprintf(lp,"\n|");
  902.   }
  903.   
  904.   /*************************************************************************
  905.   
  906. ! usage
  907. !    print help and exit
  908.   
  909.   *************************************************************************/
  910.   
  911. ! void usage()
  912.   {
  913. !    fprintf(stderr, "\nUsage: lj2 [flags] file1 [file2 ...]\n\n");
  914. !    fprintf(stderr, "\t-e  select Helv proportional 6 PT font\n");
  915. !    fprintf(stderr, "\t-h  suppress page headers\n");
  916. !    fprintf(stderr, "\t-tx set tab stop value (where x is 1 to 8)\n");
  917. !    fprintf(stderr, "\t-p  do not leave blank half pages between files\n");
  918. !    fprintf(stderr, "\t-s  shade every other line\n");
  919. !    fprintf(stderr, "\t-n  print line numbers\n");
  920. !    fprintf(stderr, "\t-b  indent for punching\n");
  921. !    fprintf(stderr, "\t-d  for duplex printing\n");
  922. !    fprintf(stderr, "\t-lxx set lines/page to x(where x is 1 to 66)\n");
  923. !    fprintf(stderr, "\t-i  ignore formfeed characters\n");
  924. !    exit(1);
  925.   }
  926.   
  927.   
  928. ! void shade()
  929.   {
  930. !    int i;
  931.   
  932. +    fprintf (lp, "\033&f0S\033*p0x0Y\033*c3300a32b10G");
  933. +    for (i=1; i <= 35; i++)
  934. +       fprintf (lp, "\033*c2P\033&a+2R");
  935. +    fprintf (lp, "\033&f1S");
  936.   }
  937. Only in new: lj2.def
  938. Binary files old/lj2.exe and new/lj2.exe differ
  939. Only in new: lj2bnd.exe
  940. Only in new: makefile.os2
  941. Only in new: ORIG
  942. Only in new: readme.os2
  943.