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 (ms‐
       gnum) entries on a line. The message files named must have been created
       by mkmsgs(1) and exist in /usr/lib/locale/locale/LC_MESSAGES. (The  di‐
       rectory  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 re‐
       trieval  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 re‐
                        place 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 ex‐
             tracted string is printed. You would use the capability  provided
             by exstr on an application program that needs to run in an inter‐
             national  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 variable (see
             environ(7)).


EXAMPLES
       Example 1 The following examples show uses of exstr



       Assume that the file example.c contains two strings:


         int main(void)
         {
                 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:


         int main(void)
         {
              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():


         int main(void)
         {
                 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)


USAGE
       The gettxt() APIs defined by the SVID standard are provided to  support
       historical  use,  and  to  support software requiring strict compliance
       with older standards. Otherwise, the use of the more modern and  widely
       supported gettext() APIs and tools is recommended.


       The  xgettext(1)  command is the gettext replacement for the exstr com‐
       mand.

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.

HISTORY
       The exstr command was added in Solaris 2.0.

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