exstr(1) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

exstr(1)

exstr(1)                         User Commands                        exstr(1)



NAME
       exstr - extract strings from source files

SYNOPSIS
       exstr filename...


       exstr -e filename...


       exstr -r [-d] filename...

DESCRIPTION
       The  exstr  utility  is  used to extract strings from C-language source
       files and replace them by calls to the message retrieval function  (see
       gettxt(3C)). This utility will extract all character strings surrounded
       by double quotes, not just strings used as arguments to the printf com‐
       mand  or the printf routine. In the first form, exstr finds all strings
       in the source files and writes them on the standard output. Each string
       is preceded by the source file name and a colon (:).


       The  first  step  is  to use exstr  -e to extract a list of strings and
       save it in a file. Next, examine this list and determine which  strings
       can  be  translated and subsequently retrieved by the message retrieval
       function. Then, modify this file by deleting lines that can't be trans‐
       lated and, for lines that can be translated, by adding the message file
       names and the  message  numbers  as  the  fourth  (msgfile)  and  fifth
       (msgnum) entries on a line. The message files named must have been cre‐
       ated by mkmsgs(1) and exist in /usr/lib/locale/locale/LC_MESSAGES. (The
       directory  locale corresponds to the language in which the text strings
       are written; see setlocale(3C)). The message numbers used  must  corre‐
       spond to the sequence numbers of strings in the message files.


       Now  use this modified file as input to exstr  -r to produce a new ver‐
       sion of the original C-language source file in which the  strings  have
       been  replaced by calls to the message retrieval function gettxt(). The
       msgfile and msgnum fields are used to construct the first  argument  to
       gettxt().  The  second  argument  to gettxt() is printed if the message
       retrieval fails at runtime. This argument is the  null  string,  unless
       the -d option is used.


       This  utility  cannot  replace strings in all instances. For example, a
       static initialized character string cannot be replaced  by  a  function
       call. A second example is that a string could be in a form of an escape
       sequence which could not be translated. In order not to break  existing
       code,  the  files  created  by  invoking exstr  -e must be examined and
       lines containing strings not replaceable  by  function  calls  must  be
       deleted.  In  some  cases  the  code  may require modifications so that
       strings can be extracted and replaced by calls to the message retrieval
       function.

OPTIONS
       The following options are supported:

       -e    Extract a list of strings from the named C-language source files,
             with positional information. This list is  produced  on  standard
             output in the following format:


               file:line:position:msgfile:msgnum:string

             where


             file        the name of a C-language source file


             line        line number in the file


             position    character position in the line


             msgfile     null


             msgnum      null


             string      the extracted text string

             Normally  you  would  redirect  this output into a file. Then you
             would edit this file to add the values you want to use  for  msg‐
             file and msgnum:


             msgfile    the  file  that  contains  the  text strings that will
                        replace string. A file with this name must be  created
                        and   installed   in  the  appropriate  place  by  the
                        mkmsgs(1) utility.


             msgnum     the sequence number of the string in msgfile.

             The next step is to use exstr  -r to replace strings in file.


       -r    Replace strings in a C-language source file with  function  calls
             to the message retrieval function gettxt().


       -d    This  option  is used together with the -r option. If the message
             retrieval fails when gettxt() is invoked  at  runtime,  then  the
             extracted  string  is  printed. You would use the capability pro‐
             vided by exstr on an application program that needs to run in  an
             international  environment  and  have messages print in more than
             one language. exstr replaces text  strings  with  function  calls
             that  point  at  strings in a message database. The database used
             depends on the runtime value of the LC_MESSAGES environment vari‐
             able (see environ(7)).


EXAMPLES
       Example 1 The following examples show uses of exstr



       Assume that the file example.c contains two strings:


         main()

         {

                 printf("This is an example\n");

                 printf("Hello world!\n");

         }




       The exstr utility, invoked with the argument example.c extracts strings
       from the named file and prints them on the standard output.


         example% exstr example.c




       produces the following output:


         example.c:This is an example\n
         example.c:Hello world!\n




       The exstr utility, invoked with the -e option and  the  argument  exam‐
       ple.c, and redirecting output to the file example.stringsout


         example% exstr -e example.c > example.stringsout




       produces the following output in the file example.stringsout


         example.c:3:8:::This is an example\n
         example.c:4:8:::Hello world!\n




       You  must edit example.stringsout to add the values you want to use for
       the msgfile and msgnum fields before these strings can be  replaced  by
       calls to the retrieval function. If UX is the name of the message file,
       and the numbers 1 and 2 represent the sequence number of the strings in
       the file, here is what example.stringsout looks like after you add this
       information:


         example.c:3:8:UX:1:This is an example\n
         example.c:4:8:UX:2:Hello world!\n




       The exstr utility can now be invoked with the -r option to replace  the
       strings  in  the source file by calls to the message retrieval function
       gettxt().


         example% exstr -r example.c <example.stringsout >intlexample.c




       produces the following output:


         extern char *gettxt();

         main()

         {

              printf(gettxt("UX:1", ""));

              printf(gettxt("UX:2", ""));

         }




       The following example:


         example% exstr -rd example.c <example.stringsout >intlexample.c




       uses the extracted strings as a second argument to gettxt():


         extern char *gettxt();

         main()

         {

                 printf(gettxt("UX:1", "This is an example\n"));

                 printf(gettxt("UX:2", "Hello world!\n"));

         }


FILES
       /usr/lib/locale/locale/LC_MESSAGES/*

           files created by mkmsgs(1)


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE VALUE _ Availabilitytext/locale


SEE ALSO
       gettxt(1), mkmsgs(1), printf(1), gettxt(3C), printf(3C), setlocale(3C),
       attributes(7), environ(7)

DIAGNOSTICS
       The error messages produced by exstr are intended to  be  self-explana‐
       tory. They indicate errors in the command line or format errors encoun‐
       tered within the input file.



Oracle Solaris 11.4               11 May 2021                         exstr(1)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3