Not only is the Internet dead, it's starting to smell really bad.:2006年03月上旬

2006/03/06(Mon)

bootstrap-pkgsrc/Cygwin

@

pkgsrc/mk/*を弄ったら割と簡単にmake configureくらいまでは動くようになった。

@

.exe問題についてはCygwinの挙動は以下の通り。

+---------+------------------+
|syscall  |.exeを補完するか?|
+---------+------------------+
|chmod    |する              |
|chown    |する              |
|exec     |する              |
|fopen    |しない            |
|link     |する              |
|open     |しない            |
|stat     |する              |
|symlink  |する              |
|unlink   |しない            |
+---------+------------------+

うは意味わかんね、なぜ中途半端。

拡張子の補完って↓な酷いコード書くしかないんだろうか。

#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>

int
suffixed_filename(const char *path, char *s, size_t n)
{
	const char *suffix = "";
	int fd;
	struct stat st;
	size_t siz;

	fd = open(path, O_RDONLY);
	if (fd == -1) {
		if (errno == ENOENT) {
			fd = lstat(path, &st);
			if (fd != -1)
				suffix = S_ISLNK(st.st_mode) ? ".lnk" : ".exe";
		}
	} else {
		close(fd);
	}
	siz = (size_t)snprintf(s, n, "%s%s", path, suffix);

	return siz < n;
}

sys/cygwin.hあたりに特別なAPIがあったりする様子が無いんだよね…
coreutilsあたりはどういう実装になってるかどっかに解説ないかねぇ。

@GB18030

mapper_parallelを使えば、iconv dataをUnicodeのBMP+1~16面にバラしたとしても
encoding module側でそれぞれに別charset idを割り当てる必要は無いのかぁ。
ならば後は変換表を作るだけだな。