[BACK]Return to help.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / builtin

Diff for /OpenXM_contrib2/asir2000/builtin/help.c between version 1.9 and 1.13

version 1.9, 2015/08/06 10:01:52 version 1.13, 2020/10/04 03:14:07
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/builtin/help.c,v 1.8 2013/07/31 00:38:12 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/help.c,v 1.12 2018/03/29 01:32:50 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 54  void Phelp();
Line 54  void Phelp();
 void ghelp(void);  void ghelp(void);
   
 struct ftab help_tab[] = {  struct ftab help_tab[] = {
         {"help",Phelp,-1},    {"help",Phelp,-1},
         {0,0,0},    {0,0,0},
 };  };
   
 void Phelp(arg,rp)  void Phelp(arg,rp)
 NODE arg;  NODE arg;
 Obj *rp;  Obj *rp;
 {  {
         if ( !arg || !ARG0(arg) )    if ( !arg || !ARG0(arg) )
                  help(0);       help(0);
         else    else
                 switch (OID(ARG0(arg))) {      switch (OID(ARG0(arg))) {
                         case O_P:        case O_P:
                                 help(NAME(VR((P)ARG0(arg))));          help(NAME(VR((P)ARG0(arg))));
                                 break;          break;
                         case O_STR:        case O_STR:
                                 help(BDY((STRING)ARG0(arg)));          help(BDY((STRING)ARG0(arg)));
                                 break;          break;
                         default:        default:
                                 break;          break;
                 }      }
         *rp = 0;    *rp = 0;
 }  }
   
 static char *ghelpstr[] = {  static char *ghelpstr[] = {
Line 89  static char *ghelpstr[] = {
Line 89  static char *ghelpstr[] = {
 void help(s)  void help(s)
 char *s;  char *s;
 {  {
         extern char *asir_libdir;    extern char *asir_libdir;
         extern char *asir_pager;    extern char *asir_pager;
         char *e;    char *e;
         static char helpdir[16];    static char helpdir[16];
         static int  ja_JP_UTF_8 = 0;    static int  ja_JP_UTF_8 = 0;
   
         if ( !helpdir[0] ) {    if ( !helpdir[0] ) {
                 e = (char *)getenv("LANG");      e = (char *)getenv("LANG");
                 if ( !e )      if ( !e )
                         strcpy(helpdir,"help");        strcpy(helpdir,"help");
                 else if ( !strncmp(e,"japan",strlen("japan"))      else if ( !strncmp(e,"japan",strlen("japan"))
                                   || !strncmp(e,"ja_JP",strlen("ja_JP")) ) {            || !strncmp(e,"ja_JP",strlen("ja_JP")) ) {
                         strcpy(helpdir,"help-ja");        strcpy(helpdir,"help-ja");
                         if (strcmp(e,"ja_JP.UTF-8")==0) ja_JP_UTF_8 = 1;        if (strcmp(e,"ja_JP.UTF-8")==0) ja_JP_UTF_8 = 1;
                 }else      }else
                         strcpy(helpdir,"help-en");        strcpy(helpdir,"help-en");
         }    }
   
         if ( !s )    if ( !s )
                 ghelp();      ghelp();
         else {    else {
 #if !defined(VISUAL) && !defined(__MINGW32__) && !defined(__MINGW64__)  #if !defined(VISUAL) && !defined(__MINGW32__)
                 int i;      int i;
                 FUNC f;      FUNC f;
                 char name[BUFSIZ],com[BUFSIZ];      char name[BUFSIZ],com[BUFSIZ];
                 FILE *fp;      FILE *fp;
   
                 sprintf(name,"%s/%s/%s",asir_libdir,helpdir,s);      sprintf(name,"%s/%s/%s",asir_libdir,helpdir,s);
                 if ( fp = fopen(name,"r") ) {      if ( fp = fopen(name,"r") ) {
                         fclose(fp);        fclose(fp);
                         if (!ja_JP_UTF_8)        if (!ja_JP_UTF_8)
                           sprintf(com,"%s %s",asir_pager,name);          sprintf(com,"%s %s",asir_pager,name);
                         else        else
                           sprintf(com,"nkf -w %s | %s ",name,asir_pager);          sprintf(com,"nkf -w %s | %s ",name,asir_pager);
                         system(com);        system(com);
                 } else {      } else {
                         gen_searchf_searchonly(s,&f);        gen_searchf_searchonly(s,&f,0);
                         if ( f && f->id == A_USR && f->f.usrf->desc )        if ( f && f->id == A_USR && f->f.usrf->desc )
                                 fprintf(stderr,"%s\n",f->f.usrf->desc);          fprintf(stderr,"%s\n",f->f.usrf->desc);
                 }      }
 #else  #else
                 FUNC f;      FUNC f;
                 gen_searchf_searchonly(s,&f);      gen_searchf_searchonly(s,&f,0);
                 if ( f && f->id == A_USR && f->f.usrf->desc )      if ( f && f->id == A_USR && f->f.usrf->desc )
                         fprintf(stderr,"%s\n",f->f.usrf->desc);        fprintf(stderr,"%s\n",f->f.usrf->desc);
   
 #endif  #endif
         }    }
 }  }
   
 void ghelp() {  void ghelp() {
         int i;    int i;
   
         for ( i = 0; ghelpstr[i]; i++ )    for ( i = 0; ghelpstr[i]; i++ )
                 fprintf(stderr,"%s\n",ghelpstr[i]);      fprintf(stderr,"%s\n",ghelpstr[i]);
 }  }

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.13

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>