# -*- Mode: text ; Coding: euc-japan -*-
autoconfiguration for LHa for UNIX version 1.14i
- Tue, Jan 30 2001 by Koji Arai
+ Thu, Feb 1 2001 by Koji Arai
¤³¤Î¥Õ¥¡¥¤¥ë¤ÏLHa for UNIX version 1.14i ¤òautoconf¡¢automake²½
¤·¤¿¤È¤¤Î¥á¥â¤Ç¤¹¡£
IFNAMES¥Õ¥¡¥¤¥ë¤Ï¡¢
¥Þ¥¯¥í̾ ÄêµÁ¤Î¤¢¤ë¥Õ¥¡¥¤¥ë... ¥³¥á¥ó¥È
¤È¤¤¤¦¹½À®¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ïautoconf¤È°ì½ï¤ËÇÛÉÛ¤µ¤ì¤ë
- ifnames¥³¥Þ¥ó¥É¤ÇÀ¸À®¤·¤Þ¤·¤¿¡£
+ ifnames¥³¥Þ¥ó¥É¤Î½ÐÎϤò¸µ¤Ë¤·¤Þ¤·¤¿¡£
IFNAMES¥Õ¥¡¥¤¥ë¤Î# ¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤ë¹Ô¤Ï³ºÅö¤Î¥Þ¥¯¥í¤¬ÃÖ¤´¹¤¨¤é¤ì¤¿¤ê¡¢
configure ¥³¥Þ¥ó¥É¤Î¥³¥Þ¥ó¥É¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤³¤È¤ò
¼¨¤·¤Þ¤¹¡£¤½¤Î¤Þ¤Þ¤Î¹Ô¤Ïautoconf¤ÇȽÃǤ¹¤ëɬÍפ¬¤Ê¤¤¤«¤Þ¤¿¤Ï»ä¤¬È½ÃÇ
¡¦¥¢¡¼¥«¥¤¥ÖÃæ¤Î´Á»ú¥Õ¥¡¥¤¥ë̾
¥ª¥ê¥¸¥Ê¥ë¤ÎLha for UNIX ¤Ï¥¢¡¼¥«¥¤¥Ö¤Ë³ÊǼ¤¹¤ë¥Õ¥¡¥¤¥ë̾¤Î´Á»ú¥³¡¼
- ¥É¤Ë´Ø¤·¤ÆÌµÆÜÃå¤Ç¤¹¡£À¤¤ÎÃæSJIS¤ÎUNIX¤äCygwin¤Î¤è¤¦¤Ê´Ä¶¤¬¤¢¤ë¤Ë¤â
- ´Ø¤é¤º UNIX ¥Ø¥Ã¥À¤Îlha ¥¢¡¼¥«¥¤¥Ö¥Õ¥¡¥¤¥ë̾¤ò EUC ¤ÈȽÃǤ·¤Æ¤¤¤Þ¤¹¡£
- (¥³¥ó¥Ñ¥¤¥ë»þ¤Ë MULTIBYTE_CHAR ¤òÄêµÁ¤·¤¿¤È¤)
-
- autoconfÈǤǤϡ¢configure ¥ª¥×¥·¥ç¥ó --enable-multibyte-char ¤Ë¤è¤ê
- ´Á»ú¥Õ¥¡¥¤¥ë̾¤¬»ÈÍѤǤ¡¢¥·¥¹¥Æ¥à¤Î´Á»ú¥³¡¼¥É¡¢¥¢¡¼¥«¥¤¥ÖÃæ¤Î´Á»ú¥³¡¼
- ¥É¤ò¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê»ØÄê¤Ç¤¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£(Ãí: ±³¤Ç¤¹¡£º£¤Î¤È¤³
- ¤í src/header.c ¤Ë¤¢¤ë xxx_kanji_code ¤òÊѹ¹¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤ª¤¹É¬
- Íפ¬¤¢¤ê¤Þ¤¹)
+ ¥É¤Ë´Ø¤·¤ÆÌµÆÜÃå¤Ç¤¹¡£¥³¥ó¥Ñ¥¤¥ë»þ¤Ë MULTIBYTE_CHAR ¤òÄêµÁ¤·¤¿¤È¤¤Ç¤â
+ ¥¢¡¼¥«¥¤¥ÖÃæ¤ÎShift JIS¥Õ¥¡¥¤¥ë̾¤òEUC¤Ë¤¹¤ë¤³¤È¤â¤Ê¤¯¡¢EUC¥³¡¼¥É
+ ¤Î¤Þ¤Þ(Àµ³Î¤Ë¤Ï¥·¥¹¥Æ¥à¤Î´Á»ú¥³¡¼¥É¤Î¤Þ¤Þ)¥¢¡¼¥«¥¤¥Ö¤Ë³ÊǼ¤·¤¿¤ê¤·¤Þ¤¹¡£
+
+ autoconfÈǤǤϡ¢configure ¥ª¥×¥·¥ç¥ó --enable-multibyte-char (¥Ç¥Õ¥©
+ ¥ë¥È)¤Ë¤è¤ê´Á»ú¥Õ¥¡¥¤¥ë̾¤¬»ÈÍѤǤ¡¢¥¢¡¼¥«¥¤¥Ö¤Ë³ÊǼ¤µ¤ì¤ë¥Õ¥¡¥¤¥ë̾
+ ¤Î´Á»ú¥³¡¼¥É¤òSJIS¤Ë¡¢¥·¥¹¥Æ¥à¥Õ¥¡¥¤¥ë̾¤Î´Á»ú¥³¡¼¥É¤òEUC¤Ë¤·¤Þ¤·¤¿¡£
+
+ ¢¨ Cygwin¤Ç¤ÏÆÃÊ̤˥·¥¹¥Æ¥à¤Î´Á»ú¥³¡¼¥É¤ÏSJIS¤Ë¤Ê¤ê¤Þ¤¹¡£
+
+ configure ¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê¥·¥¹¥Æ¥à¤Î´Á»ú¥³¡¼¥É¤ò»ØÄê
+ ¤Ç¤¤ë¤è¤¦¤Ë¡¢¤½¤·¤Æ lha ¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê¥¢¡¼¥«¥¤¥Ö¡¢
+ ¥·¥¹¥Æ¥à¤Î³Æ´Á»ú¥³¡¼¥É¤ò»ØÄê¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¤Ä¤â¤ê¤Ç¤¹¤¬¡¢º£¤Î¤È¤³¤í
+ header.c¤ÎËÁƬ¤Ë¤¢¤ë XXX_kanji_code ¤ò½ñ¤´¹¤¨¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¯¤À¤µ
+ ¤¤¡£
/* ------------------------------------------------------------------------ */
static char *get_ptr;
-int specific_archive_kanji_code = NONE;
-int specific_system_kanji_code = NONE;
-char *specific_archive_delim = NULL;
-char *specific_system_delim = NULL;
-int specific_filename_case = NONE;
-
+int optional_archive_kanji_code = NONE;
+int optional_system_kanji_code = NONE;
+char *optional_archive_delim = NULL;
+char *optional_system_delim = NULL;
+int optional_filename_case = NONE;
+
+#if __CYGWIN__
+/* Cygwin, HP-UX and other UNIX are able to use SJIS as native code. */
+int default_system_kanji_code = CODE_SJIS;
+#else
int default_system_kanji_code = CODE_EUC;
+#endif
/* ------------------------------------------------------------------------ */
int
calc_sum(p, len)
if (len == size - 1) /* check overflow */
len--;
- memmove(name + i + 1, name, len - i);
+ memmove(name+i+1, name+i, len-i);
name[i] = 0x8e;
i++;
len++;
int extend_size;
int dmy;
- int archive_kanji_code = NONE;
- int system_kanji_code = NONE;
+ int archive_kanji_code = CODE_SJIS;
+ int system_kanji_code = default_system_kanji_code;
char *archive_delim = "";
char *system_delim = "";
int filename_case = NONE;
dirname[i] = (char) get_byte();
dirname[header_size - 3] = '\0';
dir_length = header_size - 3;
-
- filename_conv(dirname, dir_length, sizeof(dirname),
- NONE, NONE, "\xff", "/", NONE);
-
break;
case 0x40:
/*
switch (hdr->extend_type) {
case EXTEND_MSDOS:
- archive_kanji_code = CODE_SJIS;
- system_kanji_code = default_system_kanji_code;
- archive_delim = "\\";
+ archive_delim = "\xff\\";
system_delim = "//";
filename_case = noconvertcase ? NONE : TO_LOWER;
case EXTEND_XOSK:
#endif
case EXTEND_UNIX:
- archive_kanji_code = CODE_EUC;
- /* Cygwin, HP-UX and other UNIX are able to use SJIS as native code. */
- system_kanji_code = default_system_kanji_code;
- archive_delim = "";
- system_delim = "";
+ archive_delim = "\xff";
+ system_delim = "//";
filename_case = NONE;
break;
case EXTEND_MACOS:
- archive_kanji_code = CODE_SJIS;
- system_kanji_code = default_system_kanji_code;
- archive_delim = "/:";
- system_delim = ":/";
+ archive_delim = "\xff/:";
+ system_delim = "/:/";
filename_case = NONE;
hdr->unix_last_modified_stamp =
break;
default:
- archive_kanji_code = NONE;
- system_kanji_code = NONE;
- archive_delim = "\\";
- system_delim = "/";
+ archive_delim = "\xff\\";
+ system_delim = "//";
filename_case = noconvertcase ? NONE : TO_LOWER;
/* pending: if small letter is included in filename,
the generic_to_unix_filename() do not case conversion,
}
/* filename kanji code and delimiter conversion */
- if (specific_archive_kanji_code)
- archive_kanji_code = specific_archive_kanji_code;
- if (specific_system_kanji_code)
- system_kanji_code = specific_system_kanji_code;
- if (specific_archive_delim)
- archive_delim = specific_archive_delim;
- if (specific_system_delim)
- system_delim = specific_system_delim;
- if (specific_filename_case)
- filename_case = specific_filename_case;
-
- filename_conv(hdr->name, name_length, sizeof(hdr->name),
- archive_kanji_code,
- system_kanji_code,
- archive_delim, system_delim, filename_case);
-
- if (dir_length && hdr->extend_type != EXTEND_MACOS) {
- filename_conv(dirname, dir_length, sizeof(dirname),
- archive_kanji_code,
- system_kanji_code,
- archive_delim, system_delim, filename_case);
- }
+ if (optional_archive_kanji_code)
+ archive_kanji_code = optional_archive_kanji_code;
+ if (optional_system_kanji_code)
+ system_kanji_code = optional_system_kanji_code;
+ if (optional_archive_delim)
+ archive_delim = optional_archive_delim;
+ if (optional_system_delim)
+ system_delim = optional_system_delim;
+ if (optional_filename_case)
+ filename_case = optional_filename_case;
if (dir_length) {
strcat(dirname, hdr->name);
name_length += dir_length;
}
+ filename_conv(hdr->name, name_length, sizeof(hdr->name),
+ archive_kanji_code,
+ system_kanji_code,
+ archive_delim, system_delim, filename_case);
+
return TRUE;
}
{
int len;
+ int system_kanji_code = default_system_kanji_code;
+ char *archive_delim = "";
+ char *system_delim = "";
+ int filename_case = NONE;
+
+ if (optional_system_kanji_code)
+ system_kanji_code = optional_system_kanji_code;
+
if (compress_method == LZHUFF5_METHOD_NUM) /* Changed N.Watazaki */
bcopy(LZHUFF5_METHOD, hdr->method, METHOD_TYPE_STRAGE);
else if (compress_method)
sprintf(hdr->name, "%s|%s", hdr->name, lkname);
}
#endif
+
if (generic_format) {
- filename_conv(hdr->name, len, sizeof(hdr->name),
- default_system_kanji_code,
- default_system_kanji_code,
- "/", "\\", TO_UPPER);
+ filename_case = TO_UPPER;
+ archive_delim = "\\";
}
+
+ filename_conv(hdr->name, len, sizeof(hdr->name),
+ system_kanji_code,
+ system_kanji_code, /* no change code */
+ system_delim, archive_delim, filename_case);
}
/* ------------------------------------------------------------------------ */
char data[LZHEADER_STRAGE];
char *p;
char *headercrc_ptr;
+ int archive_kanji_code = CODE_SJIS;
+ int system_kanji_code = default_system_kanji_code;
+
+ if (optional_archive_kanji_code)
+ archive_kanji_code = optional_archive_kanji_code;
+ if (optional_system_kanji_code)
+ system_kanji_code = optional_system_kanji_code;
bzero(data, LZHEADER_STRAGE);
bcopy(hdr->method, data + I_METHOD, METHOD_TYPE_STRAGE);
put_byte(hdr->header_level);
filename_conv(hdr->name, strlen(hdr->name), sizeof(hdr->name),
- default_system_kanji_code,
- default_system_kanji_code, /* no change code */
+ system_kanji_code,
+ archive_kanji_code, /* no change code */
"\xff\\/", "\xff\xff\xff", NONE);
if (hdr->header_level != HEADER_LEVEL2) {
fatal_error("Cannot write to temporary file");
filename_conv(hdr->name, strlen(hdr->name), sizeof(hdr->name),
- default_system_kanji_code,
- default_system_kanji_code, /* no change code */
+ archive_kanji_code,
+ system_kanji_code,
"\xff\\/", "///", NONE);
}