UNIXで動くDOS風ファイラー
これは良さげだ。TODOに「MacOSX対応」ってあるから動かないのかもしれないけど、一応試してみよう。
パッチ
diff -ru mfiler2-2.6.8b/Makefile.in mfiler2-2.6.8b.patched/Makefile.in --- mfiler2-2.6.8b/Makefile.in 2007-03-14 16:17:43.000000000 +0900 +++ mfiler2-2.6.8b.patched/Makefile.in 2007-03-18 20:58:12.000000000 +0900 @@ -60,16 +60,16 @@ $(CXX) -o mfiler2 $(CFLAGS) $(OBJ) $(ONIG) $(EXTRALIB) $(CURSES) $(MIGEMO) $(RUBYLIBPATH) $(RUBYLIBNAME) mattr: mattr.cpp - $(CXX) -o mattr mattr.cpp $(CFLAGS) $(CURSES) + $(CXX) -o mattr mattr.cpp $(CFLAGS) $(EXTRALIB) $(CURSES) mhitanykey: mhitanykey.c minato_lib/minato_lib.a - $(CC) -o mhitanykey mhitanykey.c minato_lib/minato_lib.a $(CFLAGS) $(CURSES) + $(CC) -o mhitanykey mhitanykey.c minato_lib/minato_lib.a $(CFLAGS) $(EXTRALIB) $(CURSES) mkeycode: mkeycode.cpp - $(CXX) -o mkeycode mkeycode.cpp $(CFLAGS) $(CURSES) + $(CXX) -o mkeycode mkeycode.cpp $(CFLAGS) $(EXTRALIB) $(CURSES) mattrcyg: mattrcyg.cpp - $(CXX) -o mattrcyg mattrcyg.cpp $(CFLAGS) $(EXTRALIB) $(CURSES) $(RUBYINCPATH) $(RUBYLIBPATH) $(RUBYLIBNAME) + $(CXX) -o mattrcyg mattrcyg.cpp $(CFLAGS) $(EXTRALIB) $(EXTRALIB) $(CURSES) $(RUBYINCPATH) $(RUBYLIBPATH) $(RUBY LIBNAME) ################################################################################ # ライブラリ diff -ru mfiler2-2.6.8b/cmdline.cpp mfiler2-2.6.8b.patched/cmdline.cpp --- mfiler2-2.6.8b/cmdline.cpp 2007-03-14 16:17:43.000000000 +0900 +++ mfiler2-2.6.8b.patched/cmdline.cpp 2007-03-18 20:47:12.000000000 +0900 @@ -24,12 +24,21 @@ #include <stdlib.h> #ifdef __CYGWIN__ -#include <ncurses/term.h> -#include <sys/time.h> +# include <ncurses/term.h> +# include <sys/time.h> + +typedef void (*SIGHANDLER_T)(int); +#else /* !defined(__CYGWIN) */ +# include <term.h> + +# ifdef HAVE_SIGHANDLER_T +# define SIGHANDLER_T sighandler_t +# elif HAVE_SIG_T +# define SIGHANDLER_T sig_t +# elif HAVE___SIGHANDLER_T +# define SIGHANDLER_T __sighandler_t +# endif -typedef void (*sighandler_t)(int); -#else -#include <term.h> #endif } @@ -717,19 +726,19 @@ /// shell mode /// else { - sighandler_t mfiler_int = signal(SIGINT, SIG_DFL); - sighandler_t mfiler_quit = signal(SIGQUIT, SIG_DFL); - sighandler_t mfiler_abrt = signal(SIGABRT, SIG_DFL); - sighandler_t mfiler_kill = signal(SIGKILL, SIG_DFL); - sighandler_t mfiler_pipe = signal(SIGPIPE, SIG_DFL); - sighandler_t mfiler_alrm = signal(SIGALRM, SIG_DFL); - sighandler_t mfiler_term = signal(SIGTERM, SIG_DFL); - sighandler_t mfiler_hup = signal(SIGHUP, SIG_DFL); - sighandler_t mfiler_stp = signal(SIGTSTP, SIG_DFL); - sighandler_t mfiler_ttou = signal(SIGTTOU, SIG_DFL); - sighandler_t mfiler_cont = signal(SIGCONT, SIG_DFL); - sighandler_t mfiler_winch = signal(SIGWINCH, SIG_DFL); - sighandler_t mfiler_child = signal(SIGCHLD, SIG_DFL); + SIGHANDLER_T mfiler_int = signal(SIGINT, SIG_DFL); + SIGHANDLER_T mfiler_quit = signal(SIGQUIT, SIG_DFL); + SIGHANDLER_T mfiler_abrt = signal(SIGABRT, SIG_DFL); + SIGHANDLER_T mfiler_kill = signal(SIGKILL, SIG_DFL); + SIGHANDLER_T mfiler_pipe = signal(SIGPIPE, SIG_DFL); + SIGHANDLER_T mfiler_alrm = signal(SIGALRM, SIG_DFL); + SIGHANDLER_T mfiler_term = signal(SIGTERM, SIG_DFL); + SIGHANDLER_T mfiler_hup = signal(SIGHUP, SIG_DFL); + SIGHANDLER_T mfiler_stp = signal(SIGTSTP, SIG_DFL); + SIGHANDLER_T mfiler_ttou = signal(SIGTTOU, SIG_DFL); + SIGHANDLER_T mfiler_cont = signal(SIGCONT, SIG_DFL); + SIGHANDLER_T mfiler_winch = signal(SIGWINCH, SIG_DFL); + SIGHANDLER_T mfiler_child = signal(SIGCHLD, SIG_DFL); if(!quick) { mendwin(); diff -ru mfiler2-2.6.8b/cmdline_completion.cpp mfiler2-2.6.8b.patched/cmdline_completion.cpp --- mfiler2-2.6.8b/cmdline_completion.cpp 2007-03-14 21:15:53.000000000 +0900 +++ mfiler2-2.6.8b.patched/cmdline_completion.cpp 2007-03-18 20:54:42.000000000 +0900 @@ -22,6 +22,10 @@ //////////////////////////////////////////////////////////////////////////////// void cmdline_init_after_reading_rc_file() { +#if !HAVE_DECL_ENVIRON + extern char **environ; +#endif + cmdline_rehash(); gEnvirons = rb_ary_new(); diff -ru mfiler2-2.6.8b/config.h.in mfiler2-2.6.8b.patched/config.h.in --- mfiler2-2.6.8b/config.h.in 2007-03-14 16:17:43.000000000 +0900 +++ mfiler2-2.6.8b.patched/config.h.in 2007-03-18 20:53:39.000000000 +0900 @@ -6,5 +6,11 @@ #undef HAVE_MIGEMO #undef RUBYCOMPILE +#undef HAVE_SIGHANDLER_T +#undef HAVE_SIG_T +#undef HAVE___SIGHANDLER_T + +#undef HAVE_DECL_ENVIRON + #undef HAVE_ICONV_H diff -ru mfiler2-2.6.8b/configure.in mfiler2-2.6.8b.patched/configure.in --- mfiler2-2.6.8b/configure.in 2007-03-14 16:17:43.000000000 +0900 +++ mfiler2-2.6.8b.patched/configure.in 2007-03-18 20:57:35.000000000 +0900 @@ -24,6 +24,14 @@ EXTRALIB="-lcrypt" TARGETS="mfiler2 mattr mkeycode mhitanykey mattrcyg" +elif test `uname -s` = "Darwin"; then + echo "Darwin" + + AC_DEFINE(__DARWIN__, 1) + + EXTRALIB="-liconv" + + TARGETS="mfiler2 mattr mkeycode mhitanykey" else echo "Linux" @@ -38,6 +46,18 @@ AC_SUBST(TARGETS) ################################################################################ +# signal +################################################################################ +AC_CHECK_TYPES([sighandler_t, sig_t, __signalhandler_t], , , + [#include <sys/types.h> + #include <signal.h> ]) + +################################################################################ +# environ +################################################################################ +AC_CHECK_DECL(environ) + +################################################################################ # カーシス ################################################################################ AC_MSG_CHECKING(HaveCurses) @@ -86,7 +106,7 @@ # ruby ################################################################################ RUBYINCPATH="" -RUBYLIBPATH="-L /usr/lib" +RUBYLIBPATH="-L/usr/lib" RUBYLIBNAME="" AC_ARG_WITH(ruby-header-path, @@ -100,7 +120,7 @@ AC_ARG_WITH(ruby-lib-path, [ --with-ruby-lib-path=PATH specify librubyXX.so location (/usr/lib, /usr/local/lib,...,etc)], [ - RUBYLIBPATH="-L $withval" + RUBYLIBPATH="-L$withval" ]) AC_SUBST(RUBYLIBPATH) @@ -138,4 +158,3 @@ then echo "#define HAVE_ICONV_H 1" >> config.h fi - diff -ru mfiler2-2.6.8b/extra.cpp mfiler2-2.6.8b.patched/extra.cpp --- mfiler2-2.6.8b/extra.cpp 2007-03-15 17:29:39.000000000 +0900 +++ mfiler2-2.6.8b.patched/extra.cpp 2007-03-18 20:55:21.000000000 +0900 @@ -736,6 +736,10 @@ //////////////////////////////////////////////////////////////////////////////// int msystem(char* line) { +#if !HAVE_DECL_ENVIRON + extern char **environ; +#endif + int status, save; pid_t pid; struct sigaction sa, intr, quit;
ビルド
$ patch -p1
結果
なんか動いてるっぽい。