


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/share/pascal/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 11/26/99	October 22, 1996			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 11/26/99	October 22, 1996			2



