4.3BSD-UWisc/man/cat1/mkstr.1

Compare this file to the similar file:
Show the results in this format:




MKSTR(1)            UNIX Programmer's Manual             MKSTR(1)



NAME
     mkstr - create an error message file by massaging C source

SYNOPSIS
     mkstr [ - ] messagefile prefix file ...

DESCRIPTION
     _M_k_s_t_r is used to create files of error messages.  Its use
     can make programs with large numbers of error diagnostics
     much smaller, and reduce system overhead in running the pro-
     gram as the error messages do not have to be constantly
     swapped in and out.

     _M_k_s_t_r will process each of the specified _f_i_l_e_s, placing a
     massaged version of the input file in a file whose name con-
     sists of the specified _p_r_e_f_i_x and the original name.  A typ-
     ical usage of _m_k_s_t_r would be

          mkstr pistrings xx *.c

     This command would cause all the error messages from the C
     source files in the current directory to be placed in the
     file _p_i_s_t_r_i_n_g_s and processed copies of the source for these
     files to be placed in files whose names are prefixed with
     _x_x.

     To process the error messages in the source to the message
     file _m_k_s_t_r keys on the string `error("' in the input stream.
     Each time it occurs, the C string starting at the `"' is
     placed in the message file followed by a null character and
     a new-line character; the null character terminates the mes-
     sage so it can be easily used when retrieved, the new-line
     character makes it possible to sensibly _c_a_t the error mes-
     sage file to see its contents.  The massaged copy of the
     input file then contains a _l_s_e_e_k pointer into the file which
     can be used to retrieve the message, i.e.:


          char efilname[] =  "/usr/lib/pi_strings";
          int  efil = -1;

          error(a1, a2, a3, a4)
          {
               char buf[256];

               if (efil < 0) {
                    efil = open(efilname, 0);
                    if (efil < 0) {
          oops:
                         perror(efilname);
                         exit(1);
                    }



Printed 12/27/86           May 7, 1986                          1






MKSTR(1)            UNIX Programmer's Manual             MKSTR(1)



               }
               if (lseek(efil, (long) a1, 0) || read(efil, buf, 256) <= 0)
                    goto oops;
               printf(buf, a2, a3, a4);
          }

     The optional - causes the error messages to be placed at the
     end of the specified message file for recompiling part of a
     large _m_k_s_t_red program.

SEE ALSO
     lseek(2), xstr(1)











































Printed 12/27/86           May 7, 1986                          2