home *** CD-ROM | disk | FTP | other *** search
- /*{{{}}}*/
- /*{{{ includes*/
- #include <limits.h>
- #include <unistd.h>
- #include <stdio.h>
- #include <string.h>
-
- #include <h/envvar_str.h>
- #include <h/os.h>
- #include <lib/ori_rc_lib.h>
- #include <lib/ori_add_lib.h>
- #include <h/getmsg.h>
- /*}}} */
-
- /*{{{ get_prg_name*/
- char *get_prg_name(char *arg0)
- {
- if (arg0)
- { char *p;
-
- /*{{{ arg0 behind last path separator*/
- for (p=arg0;;)
- { switch (*p++)
- { case PATH_C:
- arg0=p;
- default:
- continue;
- case '\0':
- break;
- }
- break;
- }
- /*}}} */
- /*{{{ cut at first .*/
- if (arg0[0]=='.')
- arg0++;
- for (p=arg0;;p++)
- { switch (*p)
- { case '.':
- *p='\0';
- case '\0':
- break;
- default:
- continue;
- }
- break;
- }
-
- /*}}} */
- }
- else
- arg0="";
-
- return(arg0);
- }
- /*}}} */
- /*{{{ path_file_test*/
- boolean path_file_test
- ( char * const buff,
- char **dir,
- char const * const pre,
- char const * const post
- )
- {
- int l = _POSIX_PATH_MAX;
-
- /*{{{ cat first part of path to buff*/
- { char *s = *dir, *d = buff, c;
-
- while ((c= *s)&&(c!=LIST_C)&&(c!=LIST_C_1))
- { if (l--) *d++=c;
- s++;
- }
- *d='\0';
- *dir = c ? s+1 : s;
- }
- /*}}} */
- /*{{{ maybe add slash*/
- if (*buff && l)
- { strcat(buff,PATH_SEP);
- l--;
- }
- /*}}} */
- /*{{{ add pre post*/
- if ((l-=strlen(pre))>0)
- { strcat(buff,pre);
- if ((l-=strlen(post))>0)
- strcat(buff,post);
- }
- /*}}} */
- home_expand(buff);
-
- return(!access(buff,R_OK));
- }
- /*}}} */
- /*{{{ get_system_filename*/
- char *get_system_filename
- ( char const * const ori_path,
- char const * base,
- char const * const ending,
- char * const name_default
- )
- {
- static char keyfile[_POSIX_PATH_MAX+1];
- static char std_basename[]=STD_BASENAME;
- int prefix=!IS_ROOT((char*)base);
- int msg_wished;
-
- /*{{{ try all path in list*/
- {
- char *s=prefix?(char*)ori_path:(char*)"";
-
- do
- if (path_file_test(keyfile,&s,base,ending))
- return(keyfile);
- while (*s);
- }
- /*}}} */
- /*{{{ for msg, try standard in ORIGAMI_PATH/STD_BASENAMEmsg*/
- if ((msg_wished=!strcmp(ending,MSG_ENDING)))
- /*{{{ try all path in list*/
- { char *s=(char*)ori_path;
-
- do
- if (path_file_test(keyfile,&s,std_basename,ending))
- return(keyfile);
- while (*s);
- }
- /*}}} */
- /*}}} */
- keyfile[0]='\0';
- if (name_default)
- /*{{{ create default name for error message*/
- { if (msg_wished)
- base=std_basename;
- else
- { strcpy(keyfile+1,base); base=keyfile+1; }
- if (msg_wished || prefix)
- { name_default[0]='[';
- strcat(name_default+1,ori_path);
- strcat(name_default,"]"PATH_SEP);
- strcat(name_default,base);
- strcat(name_default,ending);
- }
- else
- { strcpy(name_default,base);
- strcat(name_default,ending);
- }
- }
- /*}}} */
- return(keyfile);
- }
- /*}}} */
-