⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packager.c

📁 open arj source
💻 C
字号:
/* * $Id: packager.c,v 1.9 2003/10/16 10:32:46 andrew_belov Exp $ * --------------------------------------------------------------------------- * ARJ distribution packaging tool. * */#include "arj.h"#include "arjdata.h"#define P PATHSEP_DEFSTR                /* Dirty hack for compaction */#if TARGET==UNIX #define REGWIZ       "arj-register"#else #define REGWIZ           "register"#endif/* mkdir() macro */#if TARGET==UNIX||defined(__EMX__) #define md(p) mkdir(p, 0755)#else #define md(p) mkdir(p)#endifstatic char strform[]="%s";static char sfx_name[16];static char buf[2048];static char l_nullstr[]="";/* Q&D tolower() */static void arj_strlwr(char *str){ char p; while((p=*str)!='\0') {  if(p>='A'&&p<='Z')  {   p+=32;   *str=p;  }  str++; }}/* A smart fopen() */static FILE *s_fopen(char *name, char *mode){ FILE *rc; if((rc=fopen(name, mode))==NULL) {  printf("Can't open %s\n", name);  exit(2); } return(rc);}/* Line-by-line output routine. Involves macro expansion. */static void out_line(FILE *stream, char *str){ strcpyn(buf, str, sizeof(buf)); expand_tags(buf, sizeof(buf)); fprintf(stream, strform, buf);}/* Transfer a file, expanding the tags */static void transfer_file(char *dest, char *src){ FILE *istream; FILE *ostream; istream=s_fopen(src, "r"); ostream=s_fopen(dest, "w"); while(fgets(buf, sizeof(buf), istream)) {  expand_tags(buf, sizeof(buf));  fputs(buf, ostream); } fclose(istream); fclose(ostream);}/* Packages a binary or other file, transforming to a UNIX-style path */#if TARGET==UNIXstatic void package_unix(FILE *stream, char *name, char *trunk, char *realpath, char *unixpath){ char realname[CCHMAXPATH], unixname[CCHMAXPATH]; /* Compose the trunk path, e.g. "freebsd3.4/en/rc/" */ strcpy(realname, trunk); strcpy(unixname, trunk); strcat(realname, P); strcat(unixname, P); /* Now, make "freebsd3.4/en/rc/arj" and "freebsd3.4/en/rc/u/bin" */ strcat(realname, realpath);    /* arj */ if(realpath[0]!='\0')  strcat(realname, P); strcat(unixname, "u");         /* u */ md(unixname); strcat(unixname, P); strcat(unixname, unixpath);    /* u/bin */ md(unixname); strcat(unixname, P); /* Append the names */ strcat(realname, name); strcat(unixname, name); unlink(unixname); if(link(realname, unixname)) {  printf("Failed to link <%s> to <%s>\n", realname, unixname);  exit(1); } fprintf(stream, "%s" P "%s\n", unixpath, name);}#endif/* Arranges text file packaging (realpath -> resource, trunk -> compiler/en/rc/...) */static void package_txt(FILE *stream, char *name, char *trunk, char *realpath, char *unixpath){ char tmp_name[CCHMAXPATH], realname[CCHMAXPATH]; char *p; strcpy(tmp_name, trunk); strcat(tmp_name, P); strcat(tmp_name, name); strcpy(realname, realpath); strcat(realname, P); strcat(realname, name); transfer_file(tmp_name, realname); #if TARGET==UNIX  package_unix(stream, name, trunk, "", unixpath); #else  fprintf(stream, "%s\n", tmp_name); #endif}/* Arranges binary file packaging (realpath -> arj, trunk -> compiler/en/rc/...) */static void package_bin(FILE *stream, char *name, char *trunk, char *realpath, char *unixpath){ #if TARGET==UNIX  package_unix(stream, name, trunk, realpath, unixpath); #else  fprintf(stream, "%s" P "%s" P "%s\n", trunk, realpath, name); #endif}/* Comment creation routine */static void create_cmt(char *dest){ FILE *stream; /* Output path tricks */ #if TARGET==UNIX  char subdir[]="/usr/local/"; #elif TARGET==OS2  char subdir[]="C:" P "ARJ" P "OS2" P; /* Historical (since ARJ/2 v 2.61) */ #elif TARGET==DOS||TARGET==WIN32  char subdir[]="C:" P "ARJ" P; #endif char tmp_str[128], out_str[128]; int i, l; stream=s_fopen(dest, "w"); fprintf(stream, ")) %s -m -b -x\n\n", subdir); /* Version string */ sprintf(tmp_str, "%s", #if LOCALE==LANG_en  #if TARGET==DOS   "ARJ v @VERSION manufacturing refresh by ARJ Software Russia  All rights reserved"  #else   "@PRODUCT v @VERSION, (c) 1998-@{y}, ARJ Software Russia. All rights reserved."  #endif #elif LOCALE==LANG_de  #if TARGET==DOS   "ARJ @VERSION Produktionsauffrischung, ARJ Software Russia  Alle Rechte vorbehalten"  #else   "ARJ f乺 @PLATFORM @VERSION (c) 1998-@{y}, ARJ Software Russia. Alle Rechte vorbehalten."  #endif #elif LOCALE==LANG_ru  "ARJ v @VERSION, (c) 1998-@{y}, ARJ Software Russia." #endif ); expand_tags(tmp_str, sizeof(tmp_str)); sprintf(out_str, "@{c40}%s@{_}\n", tmp_str); out_line(stream, out_str); l=strlen(tmp_str); for(i=0; i<l; i++)  tmp_str[i]='_'; sprintf(out_str, "@{c40}%s@{_}\n", tmp_str); out_line(stream, out_str); out_line(stream, "\n"); /* Distribution area */ #ifndef DEBUG  sprintf(tmp_str, "@{c40}\n",  #if LOCALE==LANG_en   "*** For World-wide use and distribution ***"  #elif LOCALE==LANG_de   "*** F乺 weltweiten Einsatz und Vertrieb ***"  #elif LOCALE==LANG_ru   /* All correct here, Russian NLV contains strong encryption so we limit it      to domestic distribution */   "*** 劔

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -