summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/cwebdir/comm-w2c.ch
diff options
context:
space:
mode:
authorDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
committerDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
commitc6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch)
tree1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/texk/web2c/cwebdir/comm-w2c.ch
parent07ee7222e389b0777456b427a55c22d0e6ffd267 (diff)
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/cwebdir/comm-w2c.ch')
-rw-r--r--Build/source/texk/web2c/cwebdir/comm-w2c.ch866
1 files changed, 0 insertions, 866 deletions
diff --git a/Build/source/texk/web2c/cwebdir/comm-w2c.ch b/Build/source/texk/web2c/cwebdir/comm-w2c.ch
deleted file mode 100644
index 286a39723e1..00000000000
--- a/Build/source/texk/web2c/cwebdir/comm-w2c.ch
+++ /dev/null
@@ -1,866 +0,0 @@
-@q Changes for CWEB in TeX Live from numerous contributors. @>
-@q This file is in the Public Domain. @>
-
-@q Most of the original Kpathsea changes by Wlodek Bzyl and Olaf Weber @>
-@q were merged with the set of change files of the CWEBbin project; @>
-@q see https://github.com/ascherer/cwebbin for the original parts. @>
-
-@q This stripped change file {comm,ctang,cweav,ctwill,cwebman}-w2c.ch @>
-@q has been created from the elaborate set of change files @>
-@q {comm,ctang,cweav,cwebman}-patch.ch, @>
-@q {comm,cweav,cwebman}-extensions.ch, {comm,ctang,cweav}-output.ch, @>
-@q {comm,ctang,cweav}-i18n.ch, and cweav-twill.ch for CTWILL, and @>
-@q {comm,ctang,cweav,ctwill,cwebman}-texlive.ch with the 'tie' processor @>
-@q and is used as a monolithic changefile for {common,ctangle,cweave}.w @>
-@q and cwebman.tex in TeX Live. @>
-
-@q Please send comments, suggestions, etc. to tex-k@@tug.org. @>
-
-@x
-\def\title{Common code for CTANGLE and CWEAVE (Version 4.2)}
-@y
-\def\Kpathsea/{{\mc KPATHSEA\spacefactor1000}} \ifacro\sanitizecommand\Kpathsea{KPATHSEA}\fi
-\def\title{Common code for CTANGLE and CWEAVE (4.2 [\TeX~Live])}
-@z
-
-@x
- \centerline{(Version 4.2)}
-@y
- \centerline{(Version 4.2 [\TeX~Live])}
-@z
-
-@x
-\def\botofcontents{\vfill
-@y
-\def\covernote{\vbox{%
-@z
-
-@x
-}
-@y
-}}\datecontentspage
-@z
-
-@x
-to both \.{CTANGLE} and \.{CWEAVE}, which roughly concerns the following
-@y
-to \.{CTANGLE}, \.{CWEAVE}, and \.{CTWILL},
-which roughly concerns the following
-@z
-
-@x
-sometimes use \.{CWEB} to refer to either of the two component
-@y
-sometimes use \.{CWEB} to refer to any of the three component
-@z
-
-@x
-@i common.h
-@y
-@i comm-w2c.h
-@z
-
-@x
-|program|.
-@y
-|program|. And \.{CTWILL} adds some extra twists.
-@z
-
-@x
-boolean program; /* \.{CWEAVE} or \.{CTANGLE}? */
-@y
-cweb program; /* \.{CTANGLE} or \.{CWEAVE} or \.{CTWILL}? */
-@z
-
-@x
- @<Initialize pointers@>@;
-@y
- @<Initialize pointers@>@;
- @<Set up |PROGNAME| feature and initialize the search path mechanism@>@;
-@z
-
-@x
- @<Set the default options common to \.{CTANGLE} and \.{CWEAVE}@>@;
-@y
- @<Set locale and bind language catalogs@>@;
- @<Set the default options common to \.{CTANGLE} and \.{CWEAVE}@>@;
-@z
-
-@x
- if ((*(k++) = c) != ' ') limit = k;
-@y
- if ((*(k++) = c) != ' ' && c != '\r') limit = k;
-@z
-
-@x
- ungetc(c,fp); loc=buffer; err_print("! Input line too long");
-@y
- ungetc(c,fp); loc=buffer; err_print(_("! Input line too long"));
-@z
-
-@x
-static char alt_web_file_name[max_file_name_length]; /* alternate name to try */
-@y
-@z
-
-@x
- err_print("! Missing @@x in change file");
-@y
- err_print(_("! Missing @@x in change file"));
-@z
-
-@x
- err_print("! Change file ended after @@x");
-@y
- err_print(_("! Change file ended after @@x"));
-@z
-
-@x
- err_print("! Change file ended before @@y");
-@y
- err_print(_("! Change file ended before @@y"));
-@z
-
-@x
- err_print("! CWEB file ended during a change");
-@y
- err_print(_("! CWEB file ended during a change"));
-@z
-
-@x
- loc=buffer+2; err_print("! Where is the matching @@y?");
-@y
- loc=buffer+2; err_print(_("! Where is the matching @@y?"));
-@z
-
-@x
- err_print("of the preceding lines failed to match");
-@y
- err_print(_("of the preceding lines failed to match"));
-@z
-
-@x
-if ((web_file=fopen(web_file_name,"r"))==NULL) {
- strcpy(web_file_name,alt_web_file_name);
- if ((web_file=fopen(web_file_name,"r"))==NULL)
- fatal("! Cannot open input file ", web_file_name);
-}
-@y
-if ((found_filename=kpse_find_cweb(web_file_name))==NULL || @|
- (web_file=fopen(found_filename,"r"))==NULL) {
- fatal(_("! Cannot open input file "), web_file_name);
-} else if (strlen(found_filename) < max_file_name_length) {
- /* Copy name for |#line| directives. */
- if (strcmp(web_file_name, found_filename))
- strcpy(web_file_name, found_filename +
- ((strncmp(found_filename,"./",2)==0) ? 2 : 0));
- free(found_filename);
-} else fatal(_("! Filename too long\n"), found_filename);
-@z
-
-@x
-if ((change_file=fopen(change_file_name,"r"))==NULL)
- fatal("! Cannot open change file ", change_file_name);
-@y
-if ((found_filename=kpse_find_cweb(change_file_name))==NULL || @|
- (change_file=fopen(found_filename,"r"))==NULL) {
- fatal(_("! Cannot open change file "), change_file_name);
-} else if (strlen(found_filename) < max_file_name_length) {
- /* Copy name for |#line| directives. */
- if (strcmp(change_file_name, found_filename))
- strcpy(change_file_name, found_filename +
- ((strncmp(found_filename,"./",2)==0) ? 2 : 0));
- free(found_filename);
-} else fatal(_("! Filename too long\n"), found_filename);
-@z
-
-@x
- err_print("! Include file name not given");
-@y
- err_print(_("! Include file name not given"));
-@z
-
-@x
- err_print("! Too many nested includes");
-@y
- err_print(_("! Too many nested includes"));
-@z
-
-@x
-@ When an \.{@@i} line is found in the |cur_file|, we must temporarily
-stop reading it and start reading from the named include file. The
-\.{@@i} line should give a complete file name with or without
-double quotes.
-If the environment variable \.{CWEBINPUTS} is set, or if the compiler flag
-of the same name was defined at compile time,
-\.{CWEB} will look for include files in the directory thus named, if
-it cannot find them in the current directory.
-(Colon-separated paths are not supported.)
-The remainder of the \.{@@i} line after the file name is ignored.
-@y
-@ When an \.{@@i} line is found in the |cur_file|, we must temporarily
-stop reading it and start reading from the named include file. The
-\.{@@i} line should give a complete file name with or without
-double quotes.
-The actual file lookup is done with the help of the \Kpathsea/ library;
-see section~\X91:File lookup with \Kpathsea/\X~for details. % FIXME
-The remainder of the \.{@@i} line after the file name is ignored.
-@^system dependencies@> @.CWEBINPUTS@>
-@z
-
-@x
- err_print("! Include file name too long"); goto restart;}
-@y
- err_print(_("! Include file name too long")); goto restart;}
-@z
-
-@x
- char temp_file_name[max_file_name_length];
- char *cur_file_name_end=cur_file_name+max_file_name_length-1;
- char *k=cur_file_name, *kk;
- int l; /* length of file name */
-@y
- char *cur_file_name_end=cur_file_name+max_file_name_length-1;
- char *k=cur_file_name;
-@z
-
-@x
- if ((cur_file=fopen(cur_file_name,"r"))!=NULL) {
-@y
- if ((found_filename=kpse_find_cweb(cur_file_name))!=NULL && @|
- (cur_file=fopen(found_filename,"r"))!=NULL) {
- /* Copy name for |#line| directives. */
- if (strlen(found_filename) < max_file_name_length) {
- if (strcmp(cur_file_name, found_filename))
- strcpy(cur_file_name, found_filename +
- ((strncmp(found_filename,"./",2)==0) ? 2 : 0));
- free(found_filename);
- } else fatal(_("! Filename too long\n"), found_filename);
-@z
-
-@x
- kk=getenv("CWEBINPUTS");
- if (kk!=NULL) {
- if ((l=strlen(kk))>max_file_name_length-2) too_long();
- strcpy(temp_file_name,kk);
- }
- else {
-#ifdef CWEBINPUTS
- if ((l=strlen(CWEBINPUTS))>max_file_name_length-2) too_long();
- strcpy(temp_file_name,CWEBINPUTS);
-#else
- l=0;
-#endif /* |CWEBINPUTS| */
- }
- if (l>0) {
- if (k+l+2>=cur_file_name_end) too_long();
-@.Include file name ...@>
- for (; k>= cur_file_name; k--) *(k+l+1)=*k;
- strcpy(cur_file_name,temp_file_name);
- cur_file_name[l]='/'; /* \UNIX/ pathname separator */
- if ((cur_file=fopen(cur_file_name,"r"))!=NULL) {
- cur_line=0; print_where=true;
- goto restart; /* success */
- }
- }
- include_depth--; err_print("! Cannot open include file"); goto restart;
-@y
- include_depth--; err_print(_("! Cannot open include file")); goto restart;
-@z
-
-@x
- err_print("! Change file ended without @@z");
-@y
- err_print(_("! Change file ended without @@z"));
-@z
-
-@x
- err_print("! Where is the matching @@z?");
-@y
- err_print(_("! Where is the matching @@z?"));
-@z
-
-@x
- err_print("! Change file entry did not match");
-@y
- err_print(_("! Change file entry did not match"));
-@z
-
-@x
- if (byte_ptr+l>byte_mem_end) overflow("byte memory");
- if (name_ptr>=name_dir_end) overflow("name");
-@y
- if (byte_ptr+l>byte_mem_end) overflow(_("byte memory"));
- if (name_ptr>=name_dir_end) overflow(_("name"));
-@z
-
-@x
- if (s+name_len>byte_mem_end) overflow("byte memory");
- if (name_ptr+1>=name_dir_end) overflow("name");
-@y
- if (s+name_len>byte_mem_end) overflow(_("byte memory"));
- if (name_ptr+1>=name_dir_end) overflow(_("name"));
-@z
-
-@x
- if (name_ptr>=name_dir_end) overflow("name");
-@y
- if (name_ptr>=name_dir_end) overflow(_("name"));
-@z
-
-@x
- if (s+name_len>byte_mem_end) overflow("byte memory");
-@y
- if (s+name_len>byte_mem_end) overflow(_("byte memory"));
-@z
-
-@x
- fputs("\n! Ambiguous prefix: matches <",stdout);
-@y
- fputs(_("\n! Ambiguous prefix: matches <"),stdout);
-@z
-
-@x
- fputs(">\n and <",stdout);
-@y
- fputs(_(">\n and <"),stdout);
-@z
-
-@x
- fputs("\n! New name is a prefix of <",stdout);
-@y
- fputs(_("\n! New name is a prefix of <"),stdout);
-@z
-
-@x
- fputs("\n! New name extends <",stdout);
-@y
- fputs(_("\n! New name extends <"),stdout);
-@z
-
-@x
- fputs("\n! Section name incompatible with <",stdout);
-@y
- fputs(_("\n! Section name incompatible with <"),stdout);
-@z
-
-@x
- fputs(">,\n which abbreviates <",stdout);
-@y
- fputs(_(">,\n which abbreviates <"),stdout);
-@z
-
-@x
- printf(". (l. %d of change file)\n", change_line);
-else if (include_depth==0) printf(". (l. %d)\n", cur_line);
- else printf(". (l. %d of include file %s)\n", cur_line, cur_file_name);
-@y
- printf(_(". (l. %d of change file)\n"), change_line);
-else if (include_depth==0) printf(_(". (l. %d)\n"), cur_line);
- else printf(_(". (l. %d of include file %s)\n"), cur_line, cur_file_name);
-@z
-
-@x
-Some implementations may wish to pass the |history| value to the
-operating system so that it can be used to govern whether or not other
-programs are started. Here, for instance, we pass the operating system
-a status of 0 if and only if only harmless messages were printed.
-@^system dependencies@>
-@y
-On multi-tasking systems like the {\mc AMIGA} it is very convenient to
-know a little bit more about the reasons why a program failed. The four
-levels of return indicated by the |history| value are very suitable for
-this purpose. Here, for instance, we pass the operating system a status
-of~0 if and only if the run was a complete success. Any warning or error
-message will result in a higher return value, so that {\mc AREXX} scripts
-can be made sensitive to these conditions.
-@^system dependencies@>
-
-@d RETURN_OK 0 /* No problems, success */
-@d RETURN_WARN 5 /* A warning only */
-@d RETURN_ERROR 10 /* Something wrong */
-@d RETURN_FAIL 20 /* Complete or severe failure */
-@z
-
-@x
- @<Print the job |history|@>@;
-@y
- @<Print the job |history|@>@;
- @<Remove the temporary file if not already done@>@;
-@z
-
-@x
- if (history > harmless_message) return EXIT_FAILURE;
- else return EXIT_SUCCESS;
-@y
- switch(history) {
- case harmless_message: return RETURN_WARN;
- case error_message: return RETURN_ERROR;
- case fatal_message: return RETURN_FAIL;
- default: return RETURN_OK;
- }
-@z
-
-@x
-case spotless: if (show_happiness) puts("(No errors were found.)"); break;
-case harmless_message:
- puts("(Did you see the warning message above?)"); break;
-case error_message:
- puts("(Pardon me, but I think I spotted something wrong.)"); break;
-case fatal_message: puts("(That was a fatal error, my friend.)");
-@y
-case spotless:
- if (show_happiness) puts(_("(No errors were found.)")); break;
-case harmless_message:
- puts(_("(Did you see the warning message above?)")); break;
-case error_message:
- puts(_("(Pardon me, but I think I spotted something wrong.)")); break;
-case fatal_message:
- puts(_("(That was a fatal error, my friend.)"));
-@z
-
-@x
- printf("\n! Sorry, %s capacity exceeded",t); fatal("","");
-@y
- printf(_("\n! Sorry, %s capacity exceeded"),t); fatal("","");
-@z
-
-@x
-char scn_file_name[max_file_name_length]; /* name of |scn_file| */
-@y
-char scn_file_name[max_file_name_length]; /* name of |scn_file| */
-char check_file_name[max_file_name_length]; /* name of |check_file| */
-@z
-
-@x
-show_banner=show_happiness=show_progress=make_xrefs=true;@/
-@y
-make_xrefs=true;@/
-temporary_output=true; /* Check temporary output for changes */
-@z
-
-@x
-file. It may have an extension, or it may omit the extension to get |".w"| or
-|".web"| added. The \TEX/ output file name is formed by replacing the \.{CWEB}
-@y
-file. It may have an extension, or it may omit the extension to get |".w"|
-added. The \TEX/ output file name is formed by replacing the \.{CWEB}
-@z
-
-@x
-An omitted change file argument means that |"/dev/null"| should be used,
-when no changes are desired.
-@y
-An omitted change file argument means that |"/dev/null"| or---on non-\UNIX/
-systems the contents of the compile-time variable |DEV_NULL| (\TeX~Live) or
-|_DEV_NULL| (Amiga)---should be used, when no changes are desired.
-@z
-
-@x
- strcpy(change_file_name,"/dev/null");
-@y
-@#
-#if defined DEV_NULL
- strncpy(change_file_name,DEV_NULL,max_file_name_length-2);
- change_file_name[max_file_name_length-2]='\0';
-#elif defined _DEV_NULL
- strncpy(change_file_name,_DEV_NULL,max_file_name_length-2);
- change_file_name[max_file_name_length-2]='\0';
-#else
- strcpy(change_file_name,"/dev/null");
-#endif
-@^system dependencies@>
-@z
-
-@x
- while (*s) {
- if (*s=='.') dot_pos=s++;
- else if (*s=='/') dot_pos=NULL,name_pos=++s;
- else s++;
- }
-@y
- while (*s) {
- if (*s=='.') dot_pos=s++;
- else if (*s==DIR_SEPARATOR || *s==DEVICE_SEPARATOR || *s=='/')
- dot_pos=NULL,name_pos=++s;
- else s++;
- }
-@^system dependencies@>
-@z
-
-@x
-@ We use all of |*argv| for the |web_file_name| if there is a |'.'| in it,
-otherwise we add |".w"|. If this file can't be opened, we prepare an
-|alt_web_file_name| by adding |"web"| after the dot.
-@y
-@ We use all of |*argv| for the |web_file_name| if there is a |'.'| in it,
-otherwise we add |".w"|.
-@z
-
-@x
- sprintf(alt_web_file_name,"%s.web",*argv);
-@y
-@z
-
-@x
-@<Handle flag...@>=
-{
- for(dot_pos=*argv+1;*dot_pos>'\0';dot_pos++)
-@y
-@<Handle flag...@>=
-{
- if (strcmp("-help",*argv)==0 || strcmp("--help",*argv)==0)
-@.--help@>
- @<Display help message and |exit|@>@;
- if (strcmp("-version",*argv)==0 || strcmp("--version",*argv)==0)
-@.--version@>
- @<Display version information and |exit|@>@;
- if (strcmp("-verbose",*argv)==0 || strcmp("--verbose",*argv)==0)
-@.--verbose@>
- { show_banner=show_progress=show_happiness=1; continue; }
- if (strcmp("-quiet",*argv)==0 || strcmp("--quiet",*argv)==0)
-@.--quiet@>
- { show_banner=show_progress=show_happiness=0; continue; }
- for(dot_pos=*argv+1;*dot_pos>'\0';dot_pos++)
- if (*dot_pos=='v') {
- show_banner=show_progress=show_happiness=true;
- } else
- if (*dot_pos=='q') {
- show_banner=show_progress=show_happiness=false;
- } else
- if (*dot_pos=='d') {
- if (sscanf(++dot_pos,"%u",&kpathsea_debug)!=1) @<Print usage error...@>@;
- while (isdigit(*dot_pos)) dot_pos++; /* skip numeric part */
- dot_pos--; /* reset to final digit */
- } else
- if(*dot_pos=='l') {
- use_language=++dot_pos;
- break;
- } else
-@z
-
-@x
-@ @<Print usage error message and quit@>=
-{
-if (program==ctangle)
- fatal(
-"! Usage: ctangle [options] webfile[.w] [{changefile[.ch]|-} [outfile[.c]]]\n"
- ,"");
-@.Usage:@>
-else fatal(
-"! Usage: cweave [options] webfile[.w] [{changefile[.ch]|-} [outfile[.tex]]]\n"
- ,"");
-}
-@y
-@ @<Print usage error message and quit@>=
-cb_usage(program==ctangle ? "ctangle" : program==cweave ? "cweave" : "ctwill");
-@.Usage:@>
-@z
-
-@x
-@ @<Complain about arg...@>= fatal("! Filename too long\n", *argv);
-@y
-@ @<Complain about arg...@>= fatal(_("! Filename too long\n"), *argv);
-@z
-
-@x
-FILE *scn_file; /* where list of sections from \.{CWEAVE} goes */
-@y
-FILE *scn_file; /* where list of sections from \.{CWEAVE} goes */
-FILE *check_file; /* temporary output file */
-@z
-
-@x
-FILE *active_file; /* currently active file for \.{CWEAVE} output */
-@y
-FILE *active_file; /* currently active file for \.{CWEAVE} output */
-char *found_filename; /* filename found by |kpse_find_file| */
-@z
-
-@x
-@ @<Scan arguments and open output files@>=
-scan_args();
-if (program==ctangle) {
- if ((C_file=fopen(C_file_name,"wb"))==NULL)
- fatal("! Cannot open output file ", C_file_name);
-@.Cannot open output file@>
-}
-else {
- if ((tex_file=fopen(tex_file_name,"wb"))==NULL)
- fatal("! Cannot open output file ", tex_file_name);
-}
-@y
-@ @<Scan arguments and open output files@>=
-scan_args();
-if (program==ctangle) {
- if ((C_file=fopen(C_file_name,"a"))==NULL)
- fatal(_("! Cannot open output file "), C_file_name);
-@.Cannot open output file@>
- else fclose(C_file); /* Test accessability */
- strcpy(check_file_name,C_file_name);
- if(check_file_name[0]!='\0') {
- char *dot_pos=strrchr(check_file_name,'.');
- if(dot_pos==NULL) strcat(check_file_name,".ttp");
- else strcpy(dot_pos,".ttp");
- }
- if ((C_file=fopen(check_file_name,"wb"))==NULL)
- fatal(_("! Cannot open output file "), check_file_name);
-@.Cannot open output file@>
-}
-else {
- if ((tex_file=fopen(tex_file_name,"a"))==NULL)
- fatal(_("! Cannot open output file "), tex_file_name);
- else fclose(tex_file); /* Test accessability */
- strcpy(check_file_name,tex_file_name);
- if(check_file_name[0]!='\0') {
- char *dot_pos=strrchr(check_file_name,'.');
- if(dot_pos==NULL) strcat(check_file_name,".wtp");
- else strcpy(dot_pos,".wtp");
- }
- if ((tex_file=fopen(check_file_name,"wb"))==NULL)
- fatal(_("! Cannot open output file "), check_file_name);
-}
-@z
-
-@x
-@** Index.
-@y
-@** Extensions to \.{CWEB}. The following sections introduce new or improved
-features that have been created by numerous contributors over the course of a
-quarter century.
-
-Care has been taken to keep the original section numbering intact, so this new
-material should nicely integrate with the original ``\&{85.~Index}.''
-
-@* Language setting. This global variable is set by the argument of the
-`\.{+l}' (or `\.{-l}') command-line option.
-
-@<Global var...@>=
-const char *use_language=""; /* prefix of \.{cwebmac.tex} in \TEX/ output */
-
-
-@* User communication. The |scan_args| and |cb_show_banner| routines and the
-|bindtextdomain| argument string need a few extra variables.
-
-@d max_banner 50
-
-@d PATH_SEPARATOR separators[0]
-@d DIR_SEPARATOR separators[1]
-@d DEVICE_SEPARATOR separators[2]
-
-@<Global var...@>=
-char cb_banner[max_banner];@/
-string texmf_locale;@/
-#ifndef SEPARATORS
-#define SEPARATORS "://"
-#endif
-char separators[]=SEPARATORS;
-
-@* Temporary file output. Before we leave the program we have to make
-sure that the output files are correctly written.
-
-@<Remove the temporary file...@>=
-if(C_file) fclose(C_file);
-if(tex_file) fclose(tex_file);
-if(check_file) fclose(check_file);
-if(strlen(check_file_name)) /* Delete the temporary file in case of a break */
- remove(check_file_name);
-
-@* Internationalization. If translation catalogs for your personal
-\.{LANGUAGE} are installed at the appropriate place, \.{CTANGLE} and \.{CWEAVE}
-will talk to you in your favorite language. Catalog \.{cweb} contains all
-strings from ``plain \.{CWEB},'' catalog \.{cweb-tl} contains a few extra
-strings specific to the \TeX~Live interface, and catalog \.{web2c-help}
-contains the ``\.{--help}'' texts for \.{CTANGLE} and \.{CWEAVE}.
-@.cweb.mo@>
-@.cweb-tl.mo@>
-@.web2c-help.mo@>
-@.--help@>
-
-If such translation files are not available, you may want to improve this
-system by checking out the sources and translating the strings in files
-\.{cweb.pot}, \.{cweb-tl.pot}, and \.{web2c-help.pot}, and submitting the
-resulting \.{*.po} files to the maintainers at \.{tex-k@@tug.org}.
-
-\medskip \noindent \&{Note to maintainers:} \.{CWEB} in \TeX~Live generally
-does \\{not} set |HAVE_GETTEXT| at build-time, so \.{i18n} is ``off'' by
-default. If you want to create \.{CWEB} executables with NLS support, you
-have to recompile the \TeX~Live sources with a positive value for
-|HAVE_GETTEXT| in \.{comm-w2c.h}. Also you have to ``compile'' the NLS
-catalogs provided for \.{CWEB} in the source tree with \.{msgfmt} and store the
-resulting \.{.mo} files at an appropriate place in the file system.
-
-Plans for \TeX~Live are to store NLS catalogs inside the ``\TeX\ Directory
-Structure'' (TDS) and look them up with the help of the configuration variable
-``|TEXMFLOCALEDIR|,'' which should contain a single absolute path definition.
-Below we use the \Kpathsea/ function |kpse_var_expand| to evaluate this
-variable from various origins and redirect the ``GNU~gettext utilities''
-to a possibly different location than the canonical \.{/usr/share/locale}.
-
-There are several ways to set |TEXMFLOCALEDIR|:
-\smallskip
-{\parindent5em
-\item{(a)} a user-set environment variable \.{TEXMFLOCALEDIR}\hfil\break
- (overridden by \.{TEXMFLOCALEDIR\_cweb});
-\item{(b)} a line in \Kpathsea/ configuration file \.{texmf.cnf},\hfil\break
- e.g., \.{TEXMFLOCALEDIR=\$TEXMFMAIN/locale}\hfil\break
- or \.{TEXMFLOCALEDIR.cweb=\$TEXMFMAIN/locale}.\par}
-
-@<Include files@>=
-#if HAVE_GETTEXT
-#include <locale.h> /* |@!LC_MESSAGES|, |@!LC_CTYPE| */
-#else
-#define setlocale(A,B) ""
-#define bindtextdomain(A,B) ""
-#define textdomain(A) ""
-#endif
-
-@ @<Set locale...@>=
-setlocale(LC_MESSAGES, setlocale(LC_CTYPE, ""));
-texmf_locale = kpse_var_expand ("${TEXMFLOCALEDIR}");
-
-bindtextdomain("cweb",
- bindtextdomain("cweb-tl",
- bindtextdomain("web2c-help", @|
- strcmp(texmf_locale, "") ?
- texmf_locale : "/usr/share/locale")));
-
-free(texmf_locale);
-textdomain("cweb"); /* the majority of |"strings"| come from ``plain \.{CWEB}'' */
-@.cweb.mo@>
-
-@* File lookup with \Kpathsea/. The \.{CTANGLE} and \.{CWEAVE} programs from
-the original \.{CWEB} package use the compile-time default directory or the
-value of the environment variable \.{CWEBINPUTS} as an alternative place to be
-searched for files, if they could not be found in the current directory.
-
-This version uses the \Kpathsea/ mechanism for searching files.
-The directories to be searched for come from three sources:
-\smallskip
-{\parindent5em
-\item{(a)} a user-set environment variable \.{CWEBINPUTS}
- (overridden by \.{CWEBINPUTS\_cweb});
-\item{(b)} a line in \Kpathsea/ configuration file \.{texmf.cnf},\hfil\break
- e.g., \.{CWEBINPUTS=\$TEXMFDOTDIR:\$TEXMF/texmf/cweb//}\hfil\break
- or \.{CWEBINPUTS.cweb=\$TEXMFDOTDIR:\$TEXMF/texmf/cweb//};
-\item{(c)} compile-time default directories (specified in
- \.{texmf.in}),\hfil\break
- i.e., \.{\$TEXMFDOTDIR:\$TEXMF/texmf/cweb//}.\par}
-@.CWEBINPUTS@>
-
-@s const_string int
-@s string int
-
-@d kpse_find_cweb(name) kpse_find_file(name,kpse_cweb_format,true)
-
-@<Include files@>=
-typedef bool boolean;
-#define HAVE_BOOLEAN
-#include <kpathsea/kpathsea.h> /* include every \Kpathsea/ header;
- |@!kpathsea_debug|, |@!const_string|, |@!string| */
-#include <w2c/config.h> /* \&{integer} */
-#include <lib/lib.h> /* |@!versionstring| */
-
-@ We set |kpse_program_name| to `\.{cweb}'. This means if the variable
-\.{CWEBINPUTS.cweb} is present in \.{texmf.cnf} (or \.{CWEBINPUTS\_cweb}
-in the environment) its value will be used as the search path for filenames.
-This allows different flavors of \.{CWEB} to have different search paths.
-@.CWEBINPUTS@>
-
-@<Set up |PROGNAME| feature and initialize the search path mechanism@>=
-kpse_set_program_name(argv[0], "cweb");
-
-@ When the files you expect are not found, the thing to do is to enable
-\Kpathsea/ runtime debugging by assigning to the |kpathsea_debug| variable a
-small number via the `\.{-d}' option. The meaning of this number is shown
-below. To set more than one debugging option, simply sum the corresponding
-numbers.
-\medskip
-\halign{\hskip5em\tt\hfil#&&\qquad\rm#\hfil\cr
- 1&report `\.{stat}' calls\cr
- 2&report lookups in all hash tables\cr
- 4&report file openings and closings\cr
- 8&report path information\cr
-16&report directory list\cr
-32&report on each file search\cr
-64&report values of variables being looked up\cr}
-\medskip
-Debugging output is always written to |stderr|, and begins with the string
-`\.{kdebug:}'.
-
-@* System dependent changes. The most volatile stuff comes at the very end.
-
-Modules for dealing with help messages and version info.
-
-@<Include files@>=
-#define CWEB
-#include "help.h" /* |@!CTANGLEHELP|, |@!CWEAVEHELP|, |@!CTWILLHELP| */
-
-@ @<Display help message and |exit|@>=
-cb_usagehelp(program==ctangle ? CTANGLEHELP :
- program==cweave ? CWEAVEHELP : CTWILLHELP, NULL);
-@.--help@>
-
-@ Special variants from Web2c's `\.{lib/usage.c}', adapted for
-\.{i18n}/\.{t10n}. We simply filter the strings through the catalogs
-(if available).
-
-@<Predecl...@>=
-static void cb_usage (const_string str);@/
-static void cb_usagehelp (const_string *message, const_string bug_email);@/
-
-@ @c
-static void cb_usage (const_string str)
-{
- textdomain("cweb-tl");
-@.cweb-tl.mo@>
- fprintf(stderr, _("%s: Need one to three file arguments.\n"), str);
- fprintf(stderr, _("Try `%s --help' for more information.\n"), str);
-@.--help@>
- textdomain("cweb");
-@.cweb.mo@>
- history=fatal_message; exit(wrap_up());
-}
-
-static void cb_usagehelp (const_string *message, const_string bug_email)
-{
- if (!bug_email)
- bug_email = "tex-k@@tug.org";
- textdomain("web2c-help");
-@.web2c-help.mo@>
- while (*message) {
- printf("%s\n", strcmp("", *message) ? _(*message) : *message);
- ++message;
- }
- textdomain("cweb-tl");
-@.cweb-tl.mo@>
- printf(_("\nEmail bug reports to %s.\n"), bug_email);
- textdomain("cweb");
-@.cweb.mo@>
- history=spotless; exit(wrap_up());
-}
-
-@ The version information will not be translated, it uses a generic text
-template in English.
-
-@<Display version information and |exit|@>=
-printversionandexit(cb_banner,
- program == ctwill ? "Donald E. Knuth" : "Silvio Levy and Donald E. Knuth",
- NULL, "Contemporary development on https://github.com/ascherer/cweb.\n");
-@.--version@>
-
-@ But the ``banner'' is, at least the first part.
-
-@c
-void cb_show_banner (void)
-{
- assert(cb_banner[0]!='\0');
- textdomain("cweb-tl");
-@.cweb-tl.mo@>
- printf("%s%s\n", _(cb_banner), versionstring);
- textdomain("cweb");
-@.cweb.mo@>
-}
-
-@** Index.
-@z