diff -ruN TiMidity++-1.3.2/ChangeLog TiMidity++-1.3.3/ChangeLog --- TiMidity++-1.3.2/ChangeLog Wed Feb 10 14:37:39 1999 +++ TiMidity++-1.3.3/ChangeLog Wed Feb 24 17:56:32 1999 @@ -1,3 +1,80 @@ +-- 1.3.3 +Wed Feb 24 1999 +Summary: + * Used WAVE_MAPPER for waveOutOpen() in Windows. + * Renamed inflate to zip_inflate, and deflate to zip_deflate. + * Modified to port to some OSes. + * Improved XAW interface. + * Added strdup implementation is it was not exists. + * Fixed bug that MIDI reset did not update the display of program. + * Added `extern errno' in timidity.h + * Fixed XAW geometry probrem on non-trace mode. + * Not to call glob() if GLOB_BRACE is not defined. + +Date: Wed Feb 24 1999 +From: Masanao Izumo +Files: timidity/win_a.c + Used WAVE_MAPPER for waveOutOpen() +Files: libarc/url_dir.c interface/ncurs_c.c interface/xaw_i.c + Added S_ISDIR macro definition if it is not defined. There is + no difinition of this macro on NeXTSTEP under /usr/include/ or + /usr/include/sys/. It is defined in /usr/include/bsd/sys/stat.h, + but I don't include this file because some conflicts may occur. +Files: interface/xaw_i.c timidity/timidity.h + Moved strstr and strncasecmp implementation to timidity.h and support.c. + +Date: Mon Feb 22 1999 +From: Masanao Izumo +Files: timidity/audriv_none.c + Removed error codes. +Files: libarc/{zip.h,arc.c,inflate.c,url_inflate.c,arc_tar.c,deflate.c} + timidity/readmidi.c + Renamed inflate to zip_inflate, and deflate to zip_deflate. +Files: utils/support.c timidity/timidity.c timidity/timidity.h + libarc/url_dir.c + Modified to port to some OSes such as NeXTSTEP. + Added strdup() and getcwd() implementation if they are not exist. + Added declarations for `optind' and `optarg' in timidity.c if + is not exist. + Included from timidity.h + Included from url_dir.c for S_ISDIR + +Date: Sat, 20 Feb 1999 14:06:25 +0900 (JST) +From: Yoshishige Arai +Files: interface/{xaw_i.c,xaw_c.c,xaw.h,arrow.xbm} + Improved XAW interface. + - Cascading pulldown menu for file selection. + - Add time bar. + - Add auto exit, repeat, and shuffle On/Off to menu. + - Add translation keys: + CTRL-M: Text display on/off + CTRL-T: Trace display on/off + CTRL-S: shuffle on/off + CTRL-R: repeat on/off + - Display GM, GS, XG to upper right button. + - Change the function of upper right button. + Left mouse click: Text display on/off + Center mouse click: Trace display on/off + Right mouse click: Change window size. + - Display number of voices and title of MIDI in bottom of window. + +Date: Tue Feb 16 1999 +From Masanao Izumo +Files: timidity/playmidi.c + Fixed bug that MIDI reset did not update the display of program. + +Date: Mon Feb 15 1999 +From: Masanao Izumo +Files: timidity.h + Added `extern errno' in timidity.h + +Date: Fri, 12 Feb 1999 12:46:51 +0900 +From: "KINOSHITA, K." +Files: interface/xaw_i.c + Fixed XAW geometry probrem on non-trace mode. +Files: interface/gtk_i.c + Not to call glob() if GLOB_BRACE is not defined. + -- 1.3.2 Wed Feb 10 1999 Summary: diff -ruN TiMidity++-1.3.2/NEWS TiMidity++-1.3.3/NEWS --- TiMidity++-1.3.2/NEWS Wed Feb 10 12:50:05 1999 +++ TiMidity++-1.3.3/NEWS Wed Feb 24 17:47:34 1999 @@ -1,3 +1,8 @@ +* 2/24, 1999 + Released TiMidity++ v1.3.3. + * Improve XAW interface. + * Fixed some bugs and probrems. + * 2/10, 1999 Released TiMidity++ v1.3.2. * Fixed some bugs and probrems. diff -ruN TiMidity++-1.3.2/config.h.in TiMidity++-1.3.3/config.h.in --- TiMidity++-1.3.2/config.h.in Tue Feb 9 15:00:40 1999 +++ TiMidity++-1.3.3/config.h.in Mon Feb 22 17:44:49 1999 @@ -53,6 +53,9 @@ /* Define if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING +/* Define if you have the getcwd function. */ +#undef HAVE_GETCWD + /* Define if you have the gethostbyname function. */ #undef HAVE_GETHOSTBYNAME @@ -146,8 +149,14 @@ /* Define if you have the header file. */ #undef HAVE_SYS_NDIR_H +/* Define if you have the header file. */ +#undef HAVE_SYS_PARAM_H + /* Define if you have the header file. */ #undef HAVE_SYS_TIME_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_TYPES_H /* Define if you have the header file. */ #undef HAVE_UNISTD_H diff -ruN TiMidity++-1.3.2/configure TiMidity++-1.3.3/configure --- TiMidity++-1.3.2/configure Wed Feb 10 13:04:07 1999 +++ TiMidity++-1.3.3/configure Wed Feb 24 15:24:37 1999 @@ -836,7 +836,7 @@ PACKAGE=TiMidity++ -VERSION=1.3.2 +VERSION=1.3.3 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } @@ -3227,21 +3227,23 @@ fi -for ac_hdr in fcntl.h limits.h malloc.h strings.h sys/ioctl.h sys/time.h unistd.h dlfcn.h glob.h getopt.h errno.h machine/endian.h +for ac_hdr in fcntl.h limits.h malloc.h strings.h sys/ioctl.h sys/time.h \ + unistd.h dlfcn.h glob.h getopt.h errno.h machine/endian.h sys/types.h \ + sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3235: checking for $ac_hdr" >&5 +echo "configure:3237: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3245: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -3269,17 +3271,17 @@ ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:3273: checking for string.h" >&5 +echo "configure:3275: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3285: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -3303,12 +3305,12 @@ echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:3307: checking for working const" >&5 +echo "configure:3309: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3363: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -3378,14 +3380,14 @@ fi echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:3382: checking whether char is unsigned" >&5 +echo "configure:3384: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -3441,14 +3443,14 @@ fi echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:3445: checking whether byte ordering is bigendian" >&5 +echo "configure:3447: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -3459,11 +3461,11 @@ #endif ; return 0; } EOF -if { (eval echo configure:3463: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -3474,7 +3476,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:3478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3480: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -3494,7 +3496,7 @@ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -3531,21 +3533,21 @@ fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:3535: checking for inline" >&5 +echo "configure:3537: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3551: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -3571,12 +3573,12 @@ esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3575: checking for off_t" >&5 +echo "configure:3577: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3604,12 +3606,12 @@ fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:3608: checking for pid_t" >&5 +echo "configure:3610: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3637,12 +3639,12 @@ fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3641: checking for size_t" >&5 +echo "configure:3643: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3670,12 +3672,12 @@ fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:3674: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:3676: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3684,7 +3686,7 @@ struct tm *tp; ; return 0; } EOF -if { (eval echo configure:3688: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3690: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -3706,19 +3708,19 @@ echo $ac_n "checking volatile declaration""... $ac_c" 1>&6 -echo "configure:3710: checking volatile declaration" >&5 +echo "configure:3712: checking volatile declaration" >&5 if eval "test \"`echo '$''{'timidity_cv_type_volatile'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* timidity_cv_type_volatile=yes else @@ -3736,12 +3738,12 @@ fi echo $ac_n "checking union semun declaration""... $ac_c" 1>&6 -echo "configure:3740: checking union semun declaration" >&5 +echo "configure:3742: checking union semun declaration" >&5 if eval "test \"`echo '$''{'timidity_cv_type_union_semun'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3750,7 +3752,7 @@ union semun x ; return 0; } EOF -if { (eval echo configure:3754: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3756: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* timidity_cv_type_union_semun=yes else @@ -3767,15 +3769,17 @@ EXTRADEFS="$EXTRADEFS -DHAVE_UNION_SEMUN" fi + + if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:3773: checking whether ${CC-cc} needs -traditional" >&5 +echo "configure:3777: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP @@ -3793,7 +3797,7 @@ if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA @@ -3815,7 +3819,7 @@ fi echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:3819: checking for 8-bit clean memcmp" >&5 +echo "configure:3823: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3823,7 +3827,7 @@ ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -3854,17 +3858,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3858: checking for $ac_hdr" >&5 +echo "configure:3862: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3868: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3872: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -3893,12 +3897,12 @@ for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3897: checking for $ac_func" >&5 +echo "configure:3901: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3946,7 +3950,7 @@ done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:3950: checking for working mmap" >&5 +echo "configure:3954: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3954,7 +3958,7 @@ ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -4117,7 +4121,7 @@ fi echo $ac_n "checking whether setvbuf arguments are reversed""... $ac_c" 1>&6 -echo "configure:4121: checking whether setvbuf arguments are reversed" >&5 +echo "configure:4125: checking whether setvbuf arguments are reversed" >&5 if eval "test \"`echo '$''{'ac_cv_func_setvbuf_reversed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4125,7 +4129,7 @@ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < /* If setvbuf has the reversed format, exit 0. */ @@ -4139,7 +4143,7 @@ exit(0); /* Non-reversed systems segv here. */ } EOF -if { (eval echo configure:4143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_func_setvbuf_reversed=yes else @@ -4163,12 +4167,12 @@ fi echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:4167: checking return type of signal handlers" >&5 +echo "configure:4171: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4185,7 +4189,7 @@ int i; ; return 0; } EOF -if { (eval echo configure:4189: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -4204,12 +4208,12 @@ echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:4208: checking for vprintf" >&5 +echo "configure:4212: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4240: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -4256,12 +4260,12 @@ if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:4260: checking for _doprnt" >&5 +echo "configure:4264: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -4308,15 +4312,16 @@ fi -for ac_func in gettimeofday select socket strdup strstr vsnprintf snprintf sleep usleep strncasecmp strerror getopt +for ac_func in gettimeofday select socket strdup strstr vsnprintf snprintf \ + sleep usleep strncasecmp strerror getopt getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4315: checking for $ac_func" >&5 +echo "configure:4320: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4369,12 +4374,12 @@ case "$ac_cv_header_dirent_dirent_h$ac_cv_header_dirent_sys_ndir_h$ac_cv_header_dirent_sys_dir_h$ac_cv_header_dirent_ndir_h" in *yes*) echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:4373: checking for opendir" >&5 +echo "configure:4378: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -4425,12 +4430,12 @@ esac if test "x$enable_network" = "xyes"; then echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:4429: checking for socket" >&5 +echo "configure:4434: checking for socket" >&5 if eval "test \"`echo '$''{'ac_cv_func_socket'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_socket=yes" else @@ -4471,7 +4476,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for WSAStartup in -lwsock32""... $ac_c" 1>&6 -echo "configure:4475: checking for WSAStartup in -lwsock32" >&5 +echo "configure:4480: checking for WSAStartup in -lwsock32" >&5 ac_lib_var=`echo wsock32'_'WSAStartup | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'wapi_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4479,7 +4484,7 @@ ac_save_LIBS="$LIBS" LIBS="-lwsock32 $LIBS" cat > conftest.$ac_ext < #include @@ -4488,7 +4493,7 @@ WSAStartup(0,0); ; return 0; } EOF -if { (eval echo configure:4492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "wapi_cv_lib_$ac_lib_var=yes" else @@ -4574,7 +4579,7 @@ echo $ac_n "checking whether to enable audio""... $ac_c" 1>&6 -echo "configure:4578: checking whether to enable audio" >&5 +echo "configure:4583: checking whether to enable audio" >&5 # Check whether --enable-audio or --disable-audio was given. if test "${enable_audio+set}" = set; then enableval="$enable_audio" @@ -4620,7 +4625,7 @@ echo $ac_n "checking for ALSA CFLAGS""... $ac_c" 1>&6 -echo "configure:4624: checking for ALSA CFLAGS" >&5 +echo "configure:4629: checking for ALSA CFLAGS" >&5 if test "$alsa_inc_prefix" != "" ; then ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix" CFLAGS="$CFLAGS -I$alsa_inc_prefix" @@ -4628,7 +4633,7 @@ echo "$ac_t""$ALSA_CFLAGS" 1>&6 echo $ac_n "checking for ALSA LDFLAGS""... $ac_c" 1>&6 -echo "configure:4632: checking for ALSA LDFLAGS" >&5 +echo "configure:4637: checking for ALSA LDFLAGS" >&5 if test "$alsa_prefix" != "" ; then ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix" LIBS="-L$alsa_prefix" @@ -4640,7 +4645,7 @@ min_alsa_version=0.1.1 echo $ac_n "checking for libasound headers version >= $min_alsa_version""... $ac_c" 1>&6 -echo "configure:4644: checking for libasound headers version >= $min_alsa_version" >&5 +echo "configure:4649: checking for libasound headers version >= $min_alsa_version" >&5 no_alsa="" alsa_min_major_version=`echo $min_alsa_version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` @@ -4650,7 +4655,7 @@ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` cat > conftest.$ac_ext < @@ -4691,7 +4696,7 @@ ; return 0; } EOF -if { (eval echo configure:4695: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4700: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""found." 1>&6 have_alsa=yes @@ -4705,7 +4710,7 @@ rm -f conftest* echo $ac_n "checking for snd_cards in -lasound""... $ac_c" 1>&6 -echo "configure:4709: checking for snd_cards in -lasound" >&5 +echo "configure:4714: checking for snd_cards in -lasound" >&5 ac_lib_var=`echo asound'_'snd_cards | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4713,7 +4718,7 @@ ac_save_LIBS="$LIBS" LIBS="-lasound $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4878,12 +4883,12 @@ have_dl=no echo $ac_n "checking for LoadLibraryExA""... $ac_c" 1>&6 -echo "configure:4882: checking for LoadLibraryExA" >&5 +echo "configure:4887: checking for LoadLibraryExA" >&5 if eval "test \"`echo '$''{'wapi_cv_func_LoadLibraryExA'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4892,7 +4897,7 @@ LoadLibraryExA(0,0,0); ; return 0; } EOF -if { (eval echo configure:4896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* wapi_cv_func_LoadLibraryExA=yes else @@ -4915,12 +4920,12 @@ if test "$have_dl" = "no"; then echo $ac_n "checking for shl_load""... $ac_c" 1>&6 -echo "configure:4919: checking for shl_load" >&5 +echo "configure:4924: checking for shl_load" >&5 if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_shl_load=yes" else @@ -4968,12 +4973,12 @@ fi if test "$have_dl" = "no"; then echo $ac_n "checking for dlopen""... $ac_c" 1>&6 -echo "configure:4972: checking for dlopen" >&5 +echo "configure:4977: checking for dlopen" >&5 if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_dlopen=yes" else @@ -5018,12 +5023,12 @@ fi if test "$have_dl" = "no"; then echo $ac_n "checking for dld_init""... $ac_c" 1>&6 -echo "configure:5022: checking for dld_init" >&5 +echo "configure:5027: checking for dld_init" >&5 if eval "test \"`echo '$''{'ac_cv_func_dld_init'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_dld_init=yes" else @@ -5068,7 +5073,7 @@ fi if test "$have_dl" = "no"; then echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:5072: checking for dld_init in -ldld" >&5 +echo "configure:5077: checking for dld_init in -ldld" >&5 ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5076,7 +5081,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5110,13 +5115,13 @@ fi echo $ac_n "checking dynamic link method""... $ac_c" 1>&6 -echo "configure:5114: checking dynamic link method" >&5 +echo "configure:5119: checking dynamic link method" >&5 case "$have_dl" in dlopen) echo "$ac_t""use dl_dlopen.c" 1>&6 SYSEXTRAS="$SYSEXTRAS dl_dlopen.c" echo $ac_n "checking whether your dlsym() needs a leading underscore""... $ac_c" 1>&6 -echo "configure:5120: checking whether your dlsym() needs a leading underscore" >&5 +echo "configure:5125: checking whether your dlsym() needs a leading underscore" >&5 if eval "test \"`echo '$''{'timidity_cv_func_dlsym_underscore'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5264,17 +5269,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5268: checking for $ac_hdr" >&5 +echo "configure:5273: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5278: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5301,7 +5306,7 @@ done echo $ac_n "checking for initscr in -lncurses""... $ac_c" 1>&6 -echo "configure:5305: checking for initscr in -lncurses" >&5 +echo "configure:5310: checking for initscr in -lncurses" >&5 ac_lib_var=`echo ncurses'_'initscr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5309,7 +5314,7 @@ ac_save_LIBS="$LIBS" LIBS="-lncurses $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5399,7 +5404,7 @@ enableval="$enable_slang" case "x$enable_slang" in xyes|xdynamic) KEEPLIBS=$LIBS echo $ac_n "checking for SLang_init_tty in -lslang""... $ac_c" 1>&6 -echo "configure:5403: checking for SLang_init_tty in -lslang" >&5 +echo "configure:5408: checking for SLang_init_tty in -lslang" >&5 ac_lib_var=`echo slang'_'SLang_init_tty | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5407,7 +5412,7 @@ ac_save_LIBS="$LIBS" LIBS="-lslang $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5471,7 +5476,7 @@ dynamic_targets="$dynamic_targets interface_s.\$(so)" s_so_libs="-lslang" echo $ac_n "checking for initscr in -ltermcap""... $ac_c" 1>&6 -echo "configure:5475: checking for initscr in -ltermcap" >&5 +echo "configure:5480: checking for initscr in -ltermcap" >&5 ac_lib_var=`echo termcap'_'initscr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5479,7 +5484,7 @@ ac_save_LIBS="$LIBS" LIBS="-ltermcap $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5608,7 +5613,7 @@ tk_lib= for l in tcl tcl8.0jp tcl7.6jp tcl80jp tcl76jp tcl8.0 tcl7.6 tcl80 tcl76; do case "x$tcl_lib" in x) echo $ac_n "checking for Tcl_Init in -l$l""... $ac_c" 1>&6 -echo "configure:5612: checking for Tcl_Init in -l$l" >&5 +echo "configure:5617: checking for Tcl_Init in -l$l" >&5 ac_lib_var=`echo $l'_'Tcl_Init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5616,7 +5621,7 @@ ac_save_LIBS="$LIBS" LIBS="-l$l $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5651,7 +5656,7 @@ LIBS="$LIBS $tcl_lib" for l in tk tk8.0jp tk4.2jp tk80jp tk42jp tk8.0 tk4.2 tk80 tk42; do case "x$tk_lib" in x) echo $ac_n "checking for Tk_Init in -l$l""... $ac_c" 1>&6 -echo "configure:5655: checking for Tk_Init in -l$l" >&5 +echo "configure:5660: checking for Tk_Init in -l$l" >&5 ac_lib_var=`echo $l'_'Tk_Init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5659,7 +5664,7 @@ ac_save_LIBS="$LIBS" LIBS="-l$l $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6031,7 +6036,7 @@ # Extract the first word of "gtk-config", so it can be a program name with args. set dummy gtk-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6035: checking for $ac_word" >&5 +echo "configure:6040: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6062,7 +6067,7 @@ min_gtk_version=1.1.3 echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6 -echo "configure:6066: checking for GTK - version >= $min_gtk_version" >&5 +echo "configure:6071: checking for GTK - version >= $min_gtk_version" >&5 no_gtk="" if test "$GTK_CONFIG" = "no" ; then no_gtk=yes @@ -6085,7 +6090,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -6151,7 +6156,7 @@ } EOF -if { (eval echo configure:6155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then : else @@ -6185,7 +6190,7 @@ CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" cat > conftest.$ac_ext < @@ -6195,7 +6200,7 @@ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ; return 0; } EOF -if { (eval echo configure:6199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK or finding the wrong" @@ -6286,17 +6291,17 @@ fi ac_safe=`echo "X11/xpm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/xpm.h""... $ac_c" 1>&6 -echo "configure:6290: checking for X11/xpm.h" >&5 +echo "configure:6295: checking for X11/xpm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6300: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6305: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6319,7 +6324,7 @@ fi echo $ac_n "checking for XpmCreatePixmapFromData in -lXpm""... $ac_c" 1>&6 -echo "configure:6323: checking for XpmCreatePixmapFromData in -lXpm" >&5 +echo "configure:6328: checking for XpmCreatePixmapFromData in -lXpm" >&5 ac_lib_var=`echo Xpm'_'XpmCreatePixmapFromData | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6327,7 +6332,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXpm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6410,7 +6415,7 @@ LDFLAGS="$LDFLAGS $offix_lib_dir" LIBS="$LIBS $lib_xmu_opt $lib_xt_opt $lib_xprelibs_opt $lib_xext_opt -lX11" echo $ac_n "checking for DndInitialize in -lDnd""... $ac_c" 1>&6 -echo "configure:6414: checking for DndInitialize in -lDnd" >&5 +echo "configure:6419: checking for DndInitialize in -lDnd" >&5 ac_lib_var=`echo Dnd'_'DndInitialize | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6418,7 +6423,7 @@ ac_save_LIBS="$LIBS" LIBS="-lDnd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else diff -ruN TiMidity++-1.3.2/configure.in TiMidity++-1.3.3/configure.in --- TiMidity++-1.3.2/configure.in Wed Feb 10 13:00:45 1999 +++ TiMidity++-1.3.3/configure.in Mon Feb 22 17:36:37 1999 @@ -54,7 +54,7 @@ AC_INIT(timidity/timidity.c) AC_CANONICAL_SYSTEM -AM_INIT_AUTOMAKE(TiMidity++, 1.3.2, no-define) +AM_INIT_AUTOMAKE(TiMidity++, 1.3.3, no-define) dnl To use CONTAINS() macro (See acinclude.m4) CONTAINS_INIT @@ -239,7 +239,9 @@ AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_SYS_WAIT -AC_CHECK_HEADERS(fcntl.h limits.h malloc.h strings.h sys/ioctl.h sys/time.h unistd.h dlfcn.h glob.h getopt.h errno.h machine/endian.h) +AC_CHECK_HEADERS(fcntl.h limits.h malloc.h strings.h sys/ioctl.h sys/time.h \ + unistd.h dlfcn.h glob.h getopt.h errno.h machine/endian.h sys/types.h \ + sys/param.h) AC_CHECK_HEADER(string.h,, [ EXTRADEFS="$EXTRADEFS -DNO_STRING_H " ]) dnl Checks for typedefs, structures, and compiler characteristics. @@ -270,14 +272,17 @@ EXTRADEFS="$EXTRADEFS -DHAVE_UNION_SEMUN" fi + dnl Checks for library functions. + AC_PROG_GCC_TRADITIONAL AC_FUNC_MEMCMP AC_FUNC_MMAP AC_FUNC_SETVBUF_REVERSED AC_TYPE_SIGNAL AC_FUNC_VPRINTF -AC_CHECK_FUNCS(gettimeofday select socket strdup strstr vsnprintf snprintf sleep usleep strncasecmp strerror getopt) +AC_CHECK_FUNCS(gettimeofday select socket strdup strstr vsnprintf snprintf \ + sleep usleep strncasecmp strerror getopt getcwd) dnl checking on cygnus diff -ruN TiMidity++-1.3.2/interface/Makefile.am TiMidity++-1.3.3/interface/Makefile.am --- TiMidity++-1.3.2/interface/Makefile.am Mon Feb 8 04:45:21 1999 +++ TiMidity++-1.3.3/interface/Makefile.am Wed Feb 24 19:15:17 1999 @@ -182,7 +182,7 @@ misc.tcl \ timidity.el \ check.xbm \ - tclIndex + arrow.xbm .ptcl.tcl: sed -e s@%TCL_DIR%@$(TCL_DIR)@g -e s@%TIMID_DIR%@$(TIMID_DIR)@g $< > $@ diff -ruN TiMidity++-1.3.2/interface/Makefile.in TiMidity++-1.3.3/interface/Makefile.in --- TiMidity++-1.3.2/interface/Makefile.in Wed Feb 10 14:37:54 1999 +++ TiMidity++-1.3.3/interface/Makefile.in Wed Feb 24 19:17:14 1999 @@ -243,7 +243,7 @@ misc.tcl \ timidity.el \ check.xbm \ - tclIndex + arrow.xbm @ENABLE_TCLTK_TRUE@install_tk = install.tk @ENABLE_DYNAMIC_TCLTK_TRUE@install_tk = install.tk @@ -514,9 +514,9 @@ ../timidity/playmidi.h ../timidity/readmidi.h \ ../timidity/output.h ../timidity/controls.h \ ../timidity/miditrace.h ../utils/timer.h xaw.h -xaw_i.o: xaw_i.c ../config.h xaw.h check.xbm ../timidity/timidity.h \ - ../timidity/common.h ../libarc/url.h ../utils/mblock.h \ - ../timidity/instrum.h ../timidity/playmidi.h \ +xaw_i.o: xaw_i.c ../config.h xaw.h check.xbm arrow.xbm \ + ../timidity/timidity.h ../timidity/common.h ../libarc/url.h \ + ../utils/mblock.h ../timidity/instrum.h ../timidity/playmidi.h \ ../timidity/readmidi.h ../timidity/controls.h xskin_c.o: xskin_c.c ../config.h ../timidity/timidity.h \ ../timidity/common.h ../libarc/url.h ../utils/mblock.h \ diff -ruN TiMidity++-1.3.2/interface/arrow.xbm TiMidity++-1.3.3/interface/arrow.xbm --- TiMidity++-1.3.2/interface/arrow.xbm Thu Jan 1 09:00:00 1970 +++ TiMidity++-1.3.3/interface/arrow.xbm Sun Feb 21 20:13:53 1999 @@ -0,0 +1,8 @@ +#define arrow_width 32 +#define arrow_height 14 +static unsigned char arrow_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, + 0x08, 0x06, 0x00, 0x00, 0x88, 0x1f, 0x00, 0x00, 0xe8, 0x07, 0x00, 0x00, + 0xf8, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; diff -ruN TiMidity++-1.3.2/interface/gtk_i.c TiMidity++-1.3.3/interface/gtk_i.c --- TiMidity++-1.3.2/interface/gtk_i.c Fri Jan 22 20:16:00 1999 +++ TiMidity++-1.3.3/interface/gtk_i.c Sun Feb 21 20:11:06 1999 @@ -125,7 +125,7 @@ filer_cb(GtkWidget *widget, gpointer data) { gchar *filenames[2]; -#if defined(HAVE_GLOB_H) && !defined(SOLARIS) +#ifdef GLOB_BRACE int i; gchar *patt; glob_t pglob; diff -ruN TiMidity++-1.3.2/interface/ncurs_c.c TiMidity++-1.3.3/interface/ncurs_c.c --- TiMidity++-1.3.2/interface/ncurs_c.c Mon Feb 8 17:21:24 1999 +++ TiMidity++-1.3.3/interface/ncurs_c.c Wed Feb 24 17:50:37 1999 @@ -2921,6 +2921,12 @@ */ #include #include +#ifdef HAVE_FCNTL_H +#include +#endif /* HAVE_FCNTL_H */ +#ifndef S_ISDIR +#define S_ISDIR(mode) (((mode)&0xF000) == 0x4000) +#endif /* S_ISDIR */ /* Allocate new buffer */ static MiniBuffer *mini_buff_new(int size) { diff -ruN TiMidity++-1.3.2/interface/tclIndex TiMidity++-1.3.3/interface/tclIndex --- TiMidity++-1.3.2/interface/tclIndex Wed Feb 10 13:16:33 1999 +++ TiMidity++-1.3.3/interface/tclIndex Thu Jan 1 09:00:00 1970 @@ -1,62 +0,0 @@ -# Tcl autoload index file, version 2.0 -# This file is generated by the "auto_mkindex" command -# and sourced to set up indexing information for one or -# more commands. Typically each line is a command that -# sets an element in the auto_index array, where the -# element name is the name of a command and the value is -# a script that loads the command. - -set auto_index(InitGlobal) [list source [file join $dir tkpanel.tcl]] -set auto_index(HandleInput) [list source [file join $dir tkpanel.tcl]] -set auto_index(MakeShuffleList) [list source [file join $dir tkpanel.tcl]] -set auto_index(AppendMsg) [list source [file join $dir tkpanel.tcl]] -set auto_index(ClearMsg) [list source [file join $dir tkpanel.tcl]] -set auto_index(SelectNumber) [list source [file join $dir tkpanel.tcl]] -set auto_index(SetTime) [list source [file join $dir tkpanel.tcl]] -set auto_index(DispButtonPlay) [list source [file join $dir tkpanel.tcl]] -set auto_index(SetVolume) [list source [file join $dir tkpanel.tcl]] -set auto_index(WriteMsg) [list source [file join $dir tkpanel.tcl]] -set auto_index(JumpCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(VolumeCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(LoadCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(PlayCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(PauseCheck) [list source [file join $dir tkpanel.tcl]] -set auto_index(PauseCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(StopCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(QuitCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(PrevCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(NextCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(ForwardCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(BackwardCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(VolUpCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(VolDownCmd) [list source [file join $dir tkpanel.tcl]] -set auto_index(DispTables) [list source [file join $dir tkpanel.tcl]] -set auto_index(SaveConfig) [list source [file join $dir tkpanel.tcl]] -set auto_index(LoadConfig) [list source [file join $dir tkpanel.tcl]] -set auto_index(InitCmdLine) [list source [file join $dir tkpanel.tcl]] -set auto_index(SelectList) [list source [file join $dir tkpanel.tcl]] -set auto_index(OpenFiles) [list source [file join $dir tkpanel.tcl]] -set auto_index(CloseFiles) [list source [file join $dir tkpanel.tcl]] -set auto_index(ToggleCurFileMode) [list source [file join $dir tkpanel.tcl]] -set auto_index(CreateWindow) [list source [file join $dir tkpanel.tcl]] -set auto_index(filebrowser) [list source [file join $dir browser.tcl]] -set auto_index(fs:init) [list source [file join $dir browser.tcl]] -set auto_index(fs:init-lbox) [list source [file join $dir browser.tcl]] -set auto_index(fs:get-cur-lbox) [list source [file join $dir browser.tcl]] -set auto_index(fs:select) [list source [file join $dir browser.tcl]] -set auto_index(fs:selall) [list source [file join $dir browser.tcl]] -set auto_index(fs:updir) [list source [file join $dir browser.tcl]] -set auto_index(fs:changedir) [list source [file join $dir browser.tcl]] -set auto_index(fs:update) [list source [file join $dir browser.tcl]] -set auto_index(retrieve-filename) [list source [file join $dir misc.tcl]] -set auto_index(sec2time) [list source [file join $dir misc.tcl]] -set auto_index(numeric-bind) [list source [file join $dir misc.tcl]] -set auto_index(my-listbox) [list source [file join $dir misc.tcl]] -set auto_index(my-dialog) [list source [file join $dir misc.tcl]] -set auto_index(warning) [list source [file join $dir misc.tcl]] -set auto_index(error) [list source [file join $dir misc.tcl]] -set auto_index(information) [list source [file join $dir misc.tcl]] -set auto_index(question) [list source [file join $dir misc.tcl]] -set auto_index(rootname) [list source [file join $dir misc.tcl]] -set auto_index(my-random) [list source [file join $dir misc.tcl]] -set auto_index(init-random) [list source [file join $dir misc.tcl]] diff -ruN TiMidity++-1.3.2/interface/xaw.h TiMidity++-1.3.3/interface/xaw.h --- TiMidity++-1.3.2/interface/xaw.h Wed Jan 20 16:19:50 1999 +++ TiMidity++-1.3.3/interface/xaw.h Sun Feb 21 20:13:53 1999 @@ -37,9 +37,6 @@ /* Define to use scrollable Text widget instead of Label widget */ /* #define WIDGET_IS_LABEL_WIDGET */ -/* Define to use short cut keys */ -#define ENABLE_KEY_TRANSLATION - /*** Initial dot file name at home directory ***/ #define INITIAL_CONFIG ".xtimidity" diff -ruN TiMidity++-1.3.2/interface/xaw_c.c TiMidity++-1.3.3/interface/xaw_c.c --- TiMidity++-1.3.2/interface/xaw_c.c Mon Feb 1 10:57:32 1999 +++ TiMidity++-1.3.3/interface/xaw_c.c Sun Feb 21 20:13:53 1999 @@ -81,6 +81,8 @@ static void set_otherinfo(int ch, int val, char c); static double indicator_last_update = 0; +#define EXITFLG_QUIT 1 +#define EXITFLG_AUTOQUIT 2 static int exitflag=0,randomflag=0,repeatflag=0,selectflag=0,amp_diff=0; static int xaw_ready=0; static int number_of_files; @@ -143,31 +145,43 @@ } /*ARGSUSED*/ -static char tt_str[16]; +static int tt_i; static void ctl_current_time(int sec, int v) { static int previous_sec=-1,last_voices=-1; + static int last_v=-1, last_time=-1; if (sec!=previous_sec) { previous_sec=sec; - snprintf(local_buf,sizeof(local_buf),"T %02d:%02d%s",sec / 60,sec % 60,tt_str); + snprintf(local_buf,sizeof(local_buf),"t %d",sec); a_pipe_write(local_buf); } - if(!ctl.trace_playing||midi_trace.flush_flag) - return; - if(last_voices!=voices) + if (last_time!=tt_i) { + last_time=tt_i; + sprintf(local_buf, "T %d", tt_i); + a_pipe_write(local_buf); + } + if(!ctl.trace_playing || midi_trace.flush_flag) return; + if(last_voices!=voices) { last_voices=voices; + snprintf(local_buf,sizeof(local_buf),"vL%d",voices); + a_pipe_write(local_buf); + } + if(last_v!=v) { + last_v=v; + snprintf(local_buf,sizeof(local_buf),"vl%d",v); + a_pipe_write(local_buf); + } + } static void ctl_total_time(int tt) { - int mins, secs=tt / play_mode->rate; - mins=secs / 60; - secs-=mins * 60; - - sprintf(tt_str, "/%d:%02d", mins, secs); + tt_i = tt / play_mode->rate; ctl_current_time(0, 0); + sprintf(local_buf,"m%d",play_system_mode); + a_pipe_write(local_buf); } static void ctl_master_volume(int mv) @@ -339,9 +353,9 @@ case 'D' : randomflag=atoi(local_buf+2);return RC_QUIT; case 'F' : case 'L' : selectflag=atoi(local_buf+2);return RC_QUIT; - case 'l' : a_pipe_read(local_buf,sizeof(local_buf)); + case 'T' : a_pipe_read(local_buf,sizeof(local_buf)); n=atoi(local_buf+2); *valp= n * play_mode->rate; - *valp=(int32)amp_diff; return RC_JUMP; + return RC_JUMP; case 'V' : a_pipe_read(local_buf,sizeof(local_buf)); n=atoi(local_buf+2); amp_diff=n - amplitude; *valp=(int32)amp_diff; return RC_CHANGE_VOLUME; @@ -364,8 +378,9 @@ xaw_add_midi_file(local_buf + 2); return RC_NONE; case 'g': return RC_TOGGLE_SNDSPEC; + case 'q' : exitflag ^= EXITFLG_AUTOQUIT;return RC_NONE; case 'Q' : - default : exitflag=1;return RC_QUIT; + default : exitflag |= EXITFLG_QUIT;return RC_QUIT; } } } @@ -435,12 +450,15 @@ if (command==RC_LOAD_FILE&&number_of_files!=0) { snprintf(local_buf,sizeof(local_buf),"E %s",titles[file_table[current_no]]); a_pipe_write(local_buf); + snprintf(local_buf,sizeof(local_buf),"e %s",get_midi_title(list_of_files[current_no])); + a_pipe_write(local_buf); command=play_midi_file(list_of_files[file_table[current_no]]); } else { if (command==RC_CHANGE_VOLUME) amplitude+=val; + if (command==RC_JUMP) ; if (command==RC_TOGGLE_SNDSPEC) ; /* Quit timidity*/ - if (exitflag) return; + if (exitflag & EXITFLG_QUIT) return; /* Stop playing */ if (command==RC_QUIT) { sprintf(local_buf,"T 00:00"); @@ -478,6 +496,8 @@ current_no++; command=RC_LOAD_FILE; continue; + } else if (exitflag & EXITFLG_AUTOQUIT) { + return; /* Repeat */ } else if (repeatflag) { current_no=0; diff -ruN TiMidity++-1.3.2/interface/xaw_i.c TiMidity++-1.3.3/interface/xaw_i.c --- TiMidity++-1.3.2/interface/xaw_i.c Tue Feb 9 12:39:20 1999 +++ TiMidity++-1.3.3/interface/xaw_i.c Wed Feb 24 17:51:08 1999 @@ -40,6 +40,10 @@ #include #include #include +#ifdef HAVE_FCNTL_H +#include +#endif /* HAVE_FCNTL_H */ + #include "xaw.h" #include #include @@ -63,36 +67,44 @@ #include #include #include + #include "check.xbm" +#include "arrow.xbm" #include "timidity.h" #include "common.h" #include "instrum.h" #include "playmidi.h" #include "readmidi.h" #include "controls.h" -#if HAVE_STRSTR -#define strstr(s,c) index(s,c) -#endif -#ifndef HAVE_STRNCASECMP -int strncasecmp(char *s1, char *s2, unsigned int len); -#endif + +#ifndef S_ISDIR +#define S_ISDIR(mode) (((mode)&0xF000) == 0x4000) +#endif /* S_ISDIR */ #define TRACE_WIDTH 627 /* default height of trace_vport */ #define TRACEVPORT_WIDTH (TRACE_WIDTH+12) #define TRACE_WIDTH_SHORT 388 -#define TRACE_HEIGHT 336 #define TRACEV_OFS 22 +#define TRACE_FOOT 16 #define TRACEH_OFS 0 #define BAR_SPACE 20 #define BAR_HEIGHT 16 -#define VOLUME_LABEL_WIDTH 80 +static int VOLUME_LABEL_WIDTH = 80; +#define MAX_TRACE_HEIGHT 560 +#if (MAX_XAW_MIDI_CHANNELS*BAR_SPACE+TRACE_FOOT+14 > MAX_TRACE_HEIGHT) +#define TRACE_HEIGHT MAX_TRACE_HEIGHT +#else +#define TRACE_HEIGHT (MAX_XAW_MIDI_CHANNELS*BAR_SPACE+TRACE_FOOT+14) +#endif +#define VOICES_NUM_OFS 6 +#define TTITLE_OFS 120 #define BARSCALE2 0.31111 /* velocity scale (60-4)/180 */ #define BARSCALE3 0.28125 /* volume scale (40-4)/128 */ #define BARSCALE4 0.25 /* expression scale (36-4)/128 */ #define BARSCALE5 0.385827 /* expression scale (53-4)/128 */ static int currwidth = 2; -static int rotatewidth[] = {TRACE_WIDTH_SHORT, 592, 638}; +static int rotatewidth[] = {TRACE_WIDTH_SHORT, 592, TRACE_WIDTH+8}; typedef struct { int col; /* column number */ @@ -159,6 +171,7 @@ #define INST_NAME_SIZE 16 static char *inst_name[MAX_XAW_MIDI_CHANNELS]; static int disp_inst_name_len = 13; +#define UNTITLED_STR "" typedef struct { int id; @@ -174,23 +187,24 @@ } DirPath; void a_print_text(Widget,char *); -static void draw1Chan(int,int,char); -static void drawProg(int,int,int,int,Boolean), drawPan(int,int,Boolean), - drawVol(int,int), drawExp(int,int), drawPitch(int,int),drawInstname(int,char *), - drawBank(int,int),drawReverb(int,int),drawChorus(int,int); -static void quitCB(),playCB(),pauseCB(),stopCB(),prevCB(),nextCB(), +static void drawProg(int,int,int,int,Boolean),drawPan(int,int,Boolean), + draw1Chan(int,int,char),drawVol(int,int),drawExp(int,int),drawPitch(int,int), + drawInstname(int,char *),drawBank(int,int), + drawReverb(int,int),drawChorus(int,int),drawVoices(void),drawTitle(char *), + quitCB(),playCB(),pauseCB(),stopCB(),prevCB(),nextCB(), forwardCB(),backCB(),repeatCB(),randomCB(),menuCB(),sndspecCB(), - volsetCB(),volupdownCB(),exchgWidthCB(),filemenuCB(), - volupdownAction(),toggleMark(),popupLoad(),popdownLoad(),a_readconfig(), - a_saveconfig(),saveconfigAction(),setDirAction(),setDirList(); -static void drawBar(),redrawTrace(Boolean),completeDir(),ctl_channel_note(), - drawKeyboardAll(), draw1Note(), redrawAction(), redrawCaption(), - exchgWidth(), toggletrace(); + volsetCB(),volupdownCB(),tunesetCB(),tuneslideCB(),filemenuCB(), + toggleMark(),popupLoad(),popdownLoad(),volupdownAction(),tuneslideAction(), + tunesetAction(),a_readconfig(),a_saveconfig(),filemenuAction(), + setDirAction(),setDirList(), + drawBar(),redrawTrace(Boolean),completeDir(),ctl_channel_note(), + drawKeyboardAll(),draw1Note(),redrawAction(),redrawCaption(), + exchgWidth(),toggletrace(), + checkRightAndPopupSubmenu(),popdownSubmenuCB(),popdownSubmenu(),leaveSubmenu(), + addOneFile(); static char *expandDir(),*strmatch(); static int configcmp(); -#ifdef ENABLE_KEY_TRANSLATION static void pauseAction(),soundkeyAction(),speedAction(),voiceAction(); -#endif extern void a_pipe_write(char *); extern int a_pipe_read(char *,int); @@ -200,26 +214,31 @@ static Widget title_mb,title_sm,time_l,popup_load,popup_load_f,load_d; static Widget load_vport,load_flist,cwd_l,load_info, lyric_t; static Dimension lyric_height, base_height, text_height; -static GC gc,gct; +static GC gc,gcs,gct; static Pixel bgcolor,menubcolor,textcolor,textbgcolor,text2bgcolor,buttonbgcolor, buttoncolor,togglecolor,tracecolor,volcolor,expcolor,pancolor,capcolor,rimcolor, boxcolor,suscolor,playcolor,revcolor,chocolor; static Pixel black,white; static long barcol[MAX_XAW_MIDI_CHANNELS]; -static Widget toplevel,m_box,base_f,file_mb,file_sm,bsb; -static Widget quit_b,play_b,pause_b,stop_b,prev_b,next_b,fwd_b,back_b; -static Widget random_b,repeat_b,b_box,v_box,vol_l,vol_bar,trace_vport,trace; +static Widget toplevel,m_box,base_f,file_mb,file_sm,bsb, + quit_b,play_b,pause_b,stop_b,prev_b,next_b,fwd_b,back_b, + random_b,repeat_b,b_box,v_box,t_box,vol_l0,vol_l,vol_bar,tune_l0,tune_l,tune_bar, + trace_vport,trace,pbox,pbsb; +static Widget *psmenu = NULL; static char local_buf[300]; static char window_title[300], *w_title; int amplitude = DEFAULT_AMPLIFICATION; String bitmapdir = DEFAULT_PATH "/bitmaps"; Boolean arrangetitle = TRUE; +static int voices = 0, last_voice = 0, voices_num_width; +static int maxentry_on_a_menu = 0,submenu_n = 0; typedef struct { Boolean confirmexit; Boolean repeat; Boolean autostart; + Boolean autoexit; Boolean hidetext; Boolean shuffle; Boolean disptrace; @@ -304,7 +323,7 @@ static Display *disp; static int screen; -static Pixmap check_mark, layer[2]; +static Pixmap check_mark, arrow_mark, layer[2]; static int bm_height[MAXBITMAP], bm_width[MAXBITMAP], x_hot,y_hot, root_height, root_width; @@ -312,22 +331,34 @@ static int max_files; char basepath[PATH_MAX]; String *dirlist = NULL; -Dimension trace_width = TRACE_WIDTH, trace_height = TRACE_HEIGHT; +Dimension trace_width, trace_height, menu_width; +static int total_time = 0, curr_time; +static float thumbj; +#ifdef I18N +XFontSet ttitlefont; +XFontStruct *ttitlefont0; +char **ml; +XFontStruct **fs_list; +#else +XFontStruct *ttitlefont; +#define ttitlefont0 ttitlefont +#endif static struct _app_resources { String bitmap_dir; Boolean arrange_title; - short text_height,trace_width,trace_height; + Dimension text_height,trace_width,trace_height,menu_width; Pixel common_fgcolor,common_bgcolor,menub_bgcolor,text_bgcolor,text2_bgcolor, toggle_fgcolor,button_fgcolor,button_bgcolor, velocity_color,drumvelocity_color,volume_color,expr_color,pan_color, trace_bgcolor,rim_color,box_color,caption_color,sus_color,play_color, rev_color,cho_color; XFontStruct *label_font,*volume_font,*trace_font; + String more_text,file_text; #ifdef I18N - XFontSet text_font; + XFontSet text_font, ttitle_font; #else - XFontStruct *text_font; + XFontStruct *text_font, *ttitle_font; #endif } app_resources; @@ -336,7 +367,7 @@ {"bitmapDir", "BitmapDir", XtRString, sizeof(String), offset(bitmap_dir), XtRString, DEFAULT_PATH "/bitmaps"}, {"arrangeTitle", "ArrangeTitle", XtRBoolean, sizeof(Boolean), - offset(arrange_title), XtRImmediate, (XtPointer)True}, + offset(arrange_title), XtRImmediate, (XtPointer)False}, #ifdef WIDGET_IS_LABEL_WIDGET {"textLHeight", "TextLHeight", XtRShort, sizeof(short), offset(text_height), XtRImmediate, (XtPointer)30}, @@ -348,6 +379,8 @@ offset(trace_width), XtRImmediate, (XtPointer)TRACE_WIDTH}, {"traceHeight", "TraceHeight", XtRShort, sizeof(short), offset(trace_height), XtRImmediate, (XtPointer)TRACE_HEIGHT}, + {"menuWidth", "MenuWidth", XtRShort, sizeof(int), + offset(menu_width), XtRImmediate, (XtPointer)200}, {"foreground", XtCForeground, XtRPixel, sizeof(Pixel), offset(common_fgcolor), XtRString, "black"}, {"background", XtCBackground, XtRPixel, sizeof(Pixel), @@ -397,31 +430,51 @@ #ifdef I18N {"textfontset", "TextFontSet", XtRFontSet, sizeof(XFontSet), offset(text_font), XtRString, "-*-*-medium-r-normal--14-*-*-*-*-*-*-*"}, + {"ttitlefont", "Ttitlefont", XtRFontSet, sizeof(XFontSet), + offset(ttitle_font), XtRString, "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*"}, #else {"textfont", XtCFont, XtRFontStruct, sizeof(XFontStruct *), offset(text_font), XtRString, "-*-fixed-medium-r-normal--14-*-*-*-*-*-*-*"}, + {"ttitlefont", "Ttitlefont", XtRFontStruct, sizeof(XFontStruct *), + offset(ttitle_font), XtRString, "-adobe-helvetica-bold-o-*-*-14-*-75-75-*-*-*-*"}, #endif {"tracefont", "TraceFont", XtRFontStruct, sizeof(XFontStruct *), offset(trace_font), XtRString, "7x14"}, + {"labelfile", "LabelFile", XtRString, sizeof(String), + offset(file_text), XtRString, "file..."}, #undef offset }; enum { ID_LOAD = 100, ID_SAVECONFIG, - ID_AUTOSTART, ID_HIDETXT, ID_HIDETRACE, + ID_SHUFFLE, + ID_REPEAT, + ID_AUTOSTART, + ID_AUTOQUIT, ID_DUMMY, ID_QUIT, }; +#define IDS_SAVECONFIG "101" +#define IDS_HIDETXT "102" +#define IDS_HIDETRACE "103" +#define IDS_SHUFFLE "104" +#define IDS_REPEAT "105" +#define IDS_AUTOSTART "106" +#define IDS_AUTOQUIT "107" + static ButtonRec file_menu[] = { {ID_LOAD, "load", True, False}, {ID_SAVECONFIG, "saveconfig", True, False}, + {ID_HIDETXT, "(Un)Hide Messages (Ctrl-M)", True, False}, + {ID_HIDETRACE, "(Un)Hide Trace (Ctrl-T)", True, False}, + {ID_SHUFFLE, "Shuffle (Ctrl-S)", True, False}, + {ID_REPEAT, "Repeat (Ctrl-R)", True, False}, {ID_AUTOSTART, "Auto Start", True, False}, - {ID_HIDETXT, "(Un)Hide Messages", True, False}, - {ID_HIDETRACE, "(Un)Hide Trace", True, False}, + {ID_AUTOQUIT, "Auto Exit", True, False}, {ID_DUMMY, "line", False, False}, {ID_QUIT, "quit", True, False}, }; @@ -444,6 +497,7 @@ if (s == True) { s=False; XtVaSetValues(play_b,XtNstate,&s,NULL); + a_pipe_write("T 0\n"); } } @@ -489,9 +543,8 @@ a_pipe_write("P"); } -#ifdef ENABLE_KEY_TRANSLATION -/* ARGSUSED */ -static void pauseAction(Widget w,XEvent *e,String *vector,Cardinal *n) { +/*ARGSUSED*/ +static void pauseAction(Widget w,XEvent *e,String *v,Cardinal *n) { Boolean s; XtVaGetValues(play_b,XtNstate,&s,NULL); @@ -503,18 +556,33 @@ } } -static void soundkeyAction(Widget w,XEvent *e,String *vector,Cardinal *n) { +static void soundkeyAction(Widget w,XEvent *e,String *v,Cardinal *n) { a_pipe_write(*(int *)n == 0 ? "+\n":"-\n"); } -static void speedAction(Widget w,XEvent *e,String *vector,Cardinal *n) { +static void speedAction(Widget w,XEvent *e,String *v,Cardinal *n) { a_pipe_write(*(int *)n == 0 ? ">\n":"<\n"); } -static void voiceAction(Widget w,XEvent *e,String *vector,Cardinal *n) { +static void voiceAction(Widget w,XEvent *e,String *v,Cardinal *n) { a_pipe_write(*(int *)n == 0 ? "O\n":"o\n"); } -#endif + +static void randomAction(Widget w,XEvent *e,String *v,Cardinal *n) { + Boolean s; + XtVaGetValues(random_b,XtNstate,&s,NULL); + s ^= True; + if(!s) XtVaSetValues(random_b,XtNstate,s,NULL); + randomCB(NULL,&s,NULL); +} + +static void repeatAction(Widget w,XEvent *e,String *v,Cardinal *n) { + Boolean s; + XtVaGetValues(repeat_b,XtNstate,&s,NULL); + s ^= True; + if(!s) XtVaSetValues(repeat_b,XtNstate,s,NULL); + repeatCB(NULL,&s,NULL); +} /*ARGSUSED*/ static void pauseCB() { @@ -582,6 +650,7 @@ if (s == True) { a_pipe_write("R 1"); } else a_pipe_write("R 0"); + toggleMark(file_menu[ID_REPEAT-100].widget, file_menu[ID_REPEAT-100].id); } /*ARGSUSED*/ @@ -604,6 +673,7 @@ offPauseButton(); a_pipe_write("D 2"); } + toggleMark(file_menu[ID_SHUFFLE-100].widget, file_menu[ID_SHUFFLE-100].id); } static void menuCB(Widget w,XtPointer data,XtPointer dummy) { @@ -624,28 +694,81 @@ if (amplitude > MAXVOLUME) amplitude = MAXVOLUME; tmpval = value; l_thumb = thumb = (float)amplitude / (float)MAXVOLUME; - sprintf(s, "Volume %d", tmpval); + sprintf(s, "%d", tmpval); XtVaSetValues(vol_l, XtNlabel, s, NULL); sprintf(s, "V %03d\n", tmpval); a_pipe_write(s); } static void volupdownCB(Widget w,XtPointer data,XtPointer diff) { - char s[16]; + char s[8]; sprintf(s, "v %03d\n", (((int)diff > 0)? (-10):10)); a_pipe_write(s); } static void volupdownAction(Widget w,XEvent *e,String *v,Cardinal *n) { - char s[16]; + char s[8]; + sprintf(s, "v %03d\n", atoi(*v)); a_pipe_write(s); } +static void tunesetCB(Widget w,XtPointer data,XtPointer call_data) +{ + static int tmpval; + char s[16]; + float percent = *(float*)call_data; + int value = (float)(total_time * percent); + float thumb, l_thumb; + + if (tmpval == value) return; + if (curr_time > total_time) curr_time = total_time; + curr_time = tmpval = value; + l_thumb = thumb = (float)curr_time / (float)total_time; + snprintf(s,sizeof(s), "%2d:%02d", tmpval / 60, tmpval % 60); + XtVaSetValues(tune_l0, XtNlabel, s, NULL); + sprintf(s, "T %d\n", tmpval); + a_pipe_write(s); +} + +static void tunesetAction(Widget w,XEvent *e,String *v,Cardinal *n) { + static float tmpval; + char s[16]; + int value; + float thumb, l_thumb; + + XtVaGetValues(tune_bar, XtNtopOfThumb, &l_thumb, NULL); + if (tmpval == l_thumb) return; + tmpval = l_thumb; + value = (int)(l_thumb * total_time); + snprintf(s,sizeof(s), "%2d:%02d", curr_time / 60, curr_time % 60); + XtVaSetValues(tune_l0, XtNlabel, s, NULL); + XtVaSetValues(tune_bar, XtNtopOfThumb, &l_thumb, NULL); + sprintf(s, "T %d\n", value); + a_pipe_write(s); +} + +static void tuneslideCB(Widget w,XtPointer data,XtPointer diff) { + char s[16]; + + sprintf(s, "T %d\n", curr_time+ (int)diff); + a_pipe_write(s); +} + +static void tuneslideAction(Widget w,XEvent *e,String *v,Cardinal *n) { + char s[16]; + float l_thumb; + + XtVaGetValues(tune_bar, XtNtopOfThumb, &l_thumb, NULL); + sprintf(s, "T %d\n", (int)(total_time * l_thumb)); + a_pipe_write(s); +} + /*ARGSUSED*/ static void resizeAction(Widget w,XEvent *e,String *v,Cardinal *n) { - Dimension w1,w2,h1,y1,h2; - int i,tmp; + Dimension w1,w2,h1,h2; + Position y1; + int i,tmp,tmp2,tmp3; XtVaGetValues(toplevel,XtNwidth,&w1,NULL); XtVaGetValues(toplevel,XtNheight,&h1,NULL); @@ -667,16 +790,18 @@ } XtVaGetValues(v_box,XtNheight,&h2,NULL); w2 = ((w1 < TRACE_WIDTH_SHORT)? w1:TRACE_WIDTH_SHORT); /* new v_box width */ - tmp = ((w2 -VOLUME_LABEL_WIDTH -20 < 0)? 0:VOLUME_LABEL_WIDTH); /* new vol_l width */ - XtVaSetValues(vol_l,XtNwidth,tmp,NULL); + tmp = XTextWidth(app_resources.volume_font,"Volume ",7)+8; /* vol_l width */ + XtVaSetValues(vol_l0,XtNwidth,tmp,NULL); XtVaSetValues(v_box,XtNwidth,w2,NULL); + tmp2 = w2 -tmp - XTextWidth(app_resources.volume_font,"000",3) -38; + tmp3 = w2 -XTextWidth(app_resources.volume_font,"/ 99:59",7) + - XTextWidth(app_resources.volume_font,"000",3) -45; XtResizeWidget(v_box,w2,h2,0); XtVaGetValues(vol_bar,XtNheight,&h2,NULL); - XtVaSetValues(vol_bar,XtNwidth,w2 -tmp -20,NULL); - XtResizeWidget(vol_bar,w2 -tmp -20,h2,0); - /*XtVaGetValues(vol_l,XtNheight,&h2,NULL); - XtVaSetValues(vol_l,XtNwidth,w1-20,NULL); - XtResizeWidget(vol_l,w1-20,h2,0);*/ + XtVaSetValues(vol_bar,XtNwidth,tmp2,NULL); + XtVaSetValues(tune_bar,XtNwidth,tmp3,NULL); + XtResizeWidget(vol_bar,tmp2,h2,0); + XtResizeWidget(tune_bar,tmp3,h2,0); XSync(disp, False); usleep(10000); } @@ -763,6 +888,17 @@ ((file_menu[id-100].bmflag)? check_mark:None),NULL); } +static void filemenuAction(Widget w,XEvent *e,String *v,Cardinal *n) { + int i; + + if(e == NULL) + i= ID_HIDETXT; + else + i= atoi(*v); + if(!(ctl->trace_playing) && i == ID_HIDETRACE) i= ID_HIDETXT; + filemenuCB(file_menu[i-100].widget,&file_menu[i-100].id,NULL); +} + static void filemenuCB(Widget w,XtPointer id_data, XtPointer data) { int *id = (int *)id_data; Dimension w1,h1,w2,h2,tmp; @@ -774,6 +910,10 @@ case ID_AUTOSTART: toggleMark(w,*id); break; + case ID_AUTOQUIT: + toggleMark(w,*id); + a_pipe_write("q"); + break; case ID_HIDETRACE: if(ctl->trace_playing) { XtVaGetValues(toplevel,XtNheight,&h1,NULL); @@ -785,7 +925,7 @@ } else { XtManageChild(trace_vport); XtVaSetValues(trace_vport,XtNfromVert, - (XtIsManaged(lyric_t) ? lyric_t:v_box),NULL); + (XtIsManaged(lyric_t) ? lyric_t:t_box),NULL); XtMakeResizeRequest(toplevel,w1,h1+trace_height,&w2,&h2); XtVaSetValues(trace_vport,XtNheight,trace_height,NULL); } @@ -803,7 +943,7 @@ } XtUnmanageChild(lyric_t); if(ctl->trace_playing && XtIsManaged(trace_vport)) - XtVaSetValues(trace_vport,XtNfromVert,v_box,NULL); + XtVaSetValues(trace_vport,XtNfromVert,t_box,NULL); XtMakeResizeRequest(toplevel,w1,base_height-tmp,&w2,&h2); } else { XtManageChild(lyric_t); @@ -818,6 +958,12 @@ case ID_SAVECONFIG: a_saveconfig(dotfile); break; + case ID_SHUFFLE: + randomAction(NULL,NULL,NULL,NULL); + break; + case ID_REPEAT: + repeatAction(NULL,NULL,NULL,NULL); + break; case ID_QUIT: quitCB(w, NULL, NULL); break; @@ -894,21 +1040,50 @@ a_pipe_read(local_buf,sizeof(local_buf)); switch (local_buf[0]) { - case 'T' : XtVaSetValues(time_l,XtNlabel,local_buf+2,NULL); break; + case 't' : + curr_time = n = atoi(local_buf+2); i= n % 60; n /= 60; + sprintf(s, "%d:%02d", n,i); + XtVaSetValues(tune_l0, XtNlabel, s, NULL); + if (total_time >0) { + thumbj = (float)curr_time / (float)total_time; + if (sizeof(thumbj) > sizeof(XtArgVal)) { + XtVaSetValues(tune_bar,XtNtopOfThumb,&thumbj,NULL); + } else { + XtArgVal *l_thumbj = (XtArgVal *) &thumbj; + XtVaSetValues(tune_bar,XtNtopOfThumb,*l_thumbj,NULL); + } + } + break; + case 'T' : + n= atoi(local_buf+2); + if(n > 0) { + total_time = n; + snprintf(s,sizeof(s), "/%2d:%02d", n/60, n%60); + XtVaSetValues(tune_l,XtNlabel,s,NULL); + } + break; case 'E' : { - char *name; - name=strrchr(local_buf+2,' '); - if(name==NULL) - break; - name++; - XtVaSetValues(title_mb,XtNlabel,name,NULL); - if (arrangetitle) { + char *name; + name=strrchr(local_buf+2,' '); + if(name==NULL) + break; + name++; + XtVaSetValues(title_mb,XtNlabel,name,NULL); snprintf(window_title, sizeof(window_title), "%s : %s", APP_CLASS, local_buf+2); XtVaSetValues(toplevel,XtNtitle,window_title,NULL); - } + *window_title = '\0'; } break; + case 'e' : + if (arrangetitle) { + char *p= local_buf+2; + if (!strcmp(p, "(null)")) p = UNTITLED_STR; + snprintf(window_title, sizeof(window_title), "%s : %s", APP_CLASS, p); + XtVaSetValues(toplevel,XtNtitle,window_title,NULL); + } + snprintf(window_title, sizeof(window_title), "%s", local_buf+2); + break; case 'O' : offPlayButton();break; case 'L' : a_print_msg(lyric_t); @@ -917,7 +1092,7 @@ case 'V': i=atoi(local_buf+2); thumb = (float)i / (float)MAXVOLUME; - sprintf(s, "Volume %3d", i); + sprintf(s, "%d", i); XtVaSetValues(vol_l, XtNlabel, s, NULL); if (sizeof(thumb) > sizeof(XtArgVal)) { XtVaSetValues(vol_bar, XtNtopOfThumb, &thumb, NULL); @@ -927,6 +1102,14 @@ } break; case 'v': + c= *(local_buf+1); + n= atoi(local_buf+2); + if(c == 'L') + voices = n; + else + last_voice = n; + if(IsTracePlaying()) drawVoices(); + break; case 'g': case '\0' : break; @@ -935,8 +1118,7 @@ max_files+=atoi(local_buf+2); for (i=n;i 0) { - if ((dif = - (unsigned char)tolower(*s1) - (unsigned char)tolower(*s2++)) == 0) - return(dif); - if (*s1++ == '\0') - break; - } - return (0); -} -#endif static int configcmp(char *s, int *num) { int i; @@ -1245,7 +1428,6 @@ pl[plane].w[4]-4,BAR_HEIGHT); } XSetForeground(disp, gct, black); - /* 14 means suspected Text Height, though it's not so exact.. */ sprintf(s, "%3d", val); XDrawString(XtDisplay(trace), XtWindow(trace), gct, xofs+5,TRACEV_OFS+BAR_SPACE*ch+16,s,3); @@ -1392,15 +1574,35 @@ pl[plane].ofs[CL_BA],TRACEV_OFS+BAR_SPACE*ch+15, s,strlen(s)); } -static void exchgWidthCB(Widget w,XtPointer data,XtPointer dummy) { - Dimension w1,h1,w2,h2; +#define VOICENUM_WIDTH 56 +static void drawVoices(void) { + XSetForeground(disp, gct, tracecolor); + XFillRectangle(disp,XtWindow(trace),gct,voices_num_width +4, + MAX_XAW_MIDI_CHANNELS*BAR_SPACE+TRACEV_OFS+1,VOICENUM_WIDTH,TRACE_FOOT); + sprintf(local_buf, "%3d/%d", last_voice, voices); + XSetForeground(disp, gct, capcolor); + XDrawString(disp, XtWindow(trace),gct,voices_num_width+6, + MAX_XAW_MIDI_CHANNELS*BAR_SPACE+TRACEV_OFS+16,local_buf,strlen(local_buf)); +} - XtVaGetValues(toplevel,XtNheight,&h1,NULL); - ++currwidth; - currwidth %= 3; /* number of rotatewidth */ - w1 = rotatewidth[currwidth]; - XtMakeResizeRequest(toplevel,w1,h1,&w2,&h2); - resizeAction(w,NULL,NULL,NULL); +static void drawTitle(char *str) { + char *p = str; + + if(ctl->trace_playing) { + if (!strcmp(p, "(null)")) p = UNTITLED_STR; + XSetForeground(disp, gcs, capcolor); +#ifdef I18N + XmbDrawString(XtDisplay(trace), XtWindow(trace),ttitlefont,gcs, + VOICES_NUM_OFS+TTITLE_OFS, + MAX_XAW_MIDI_CHANNELS*BAR_SPACE+TRACEV_OFS+ ttitlefont0->ascent +3, + p,strlen(p)); +#else + XDrawString(XtDisplay(trace), XtWindow(trace),gcs, + VOICES_NUM_OFS+TTITLE_OFS, + MAX_XAW_MIDI_CHANNELS*BAR_SPACE+TRACEV_OFS+ ttitlefont->ascent +3, + p,strlen(p)); +#endif + } } static void toggletrace(Widget w,XEvent *e,String *v,Cardinal *n) { @@ -1412,7 +1614,14 @@ /*ARGSUSED*/ static void exchgWidth(Widget w,XEvent *e,String *v,Cardinal *n) { - exchgWidthCB(w,NULL,NULL); + Dimension w1,h1,w2,h2; + + XtVaGetValues(toplevel,XtNheight,&h1,NULL); + ++currwidth; + currwidth %= 3; /* number of rotatewidth */ + w1 = rotatewidth[currwidth]; + XtMakeResizeRequest(toplevel,w1,h1,&w2,&h2); + resizeAction(w,NULL,NULL,NULL); } /*ARGSUSED*/ @@ -1483,16 +1692,14 @@ p = pl[plane].cap[i]; XDrawString(disp,XtWindow(trace),gct,pl[plane].ofs[i]+4,16,p,strlen(p)); } - switch(play_system_mode) { - case GM_SYSTEM_MODE: - XDrawString(disp,XtWindow(trace),gct,TRACEH_OFS+594,16,"[GM]",4); break; - case GS_SYSTEM_MODE: - XDrawString(disp,XtWindow(trace),gct,TRACEH_OFS+594,16,"[GS]",4); break; - case XG_SYSTEM_MODE: - XDrawString(disp,XtWindow(trace),gct,TRACEH_OFS+594,16,"[XG]",4); break; - default: - break; - } + XSetForeground(disp, gct, tracecolor); + XFillRectangle(disp,XtWindow(trace),gct,0,MAX_XAW_MIDI_CHANNELS*BAR_SPACE+TRACEV_OFS+1, + TRACE_WIDTH,TRACE_FOOT); + XSetForeground(disp, gct, capcolor); + XDrawString(disp, XtWindow(trace),gct,VOICES_NUM_OFS, + MAX_XAW_MIDI_CHANNELS*BAR_SPACE+TRACEV_OFS+16,"Voices",6); + drawVoices(); + drawTitle(window_title); if(draw) { for(i=0; ictotal[i] != 0 && Panel->c_flags[i] & FLAG_PROG_ON) @@ -1539,6 +1746,7 @@ Panel->c_flags[i] = 0; *inst_name[i] = '\0'; } + last_voice = 0; } /*ARGSUSED*/ @@ -1618,6 +1826,8 @@ Cfg->repeat = (Boolean)k; break; case S_AutoStart: Cfg->autostart = (Boolean)k; break; + case S_AutoExit: + Cfg->autoexit = (Boolean)k; break; case S_DispText: Cfg->hidetext = (Boolean)(k ^ 1); break; @@ -1633,10 +1843,6 @@ } } -static void saveconfigAction(Widget w,XEvent e,XtPointer data) { - a_saveconfig(dotfile); -} - static void a_saveconfig (char *file) { FILE *fp; Boolean s1, s2; @@ -1651,6 +1857,7 @@ fprintf(fp,"set %s %d\n",cfg_items[S_DispText],(int)(file_menu[ID_HIDETXT-100].bmflag ^ TRUE)); fprintf(fp,"set %s %d\n",cfg_items[S_ShufflePlay],(int)s2); fprintf(fp,"set %s %d\n",cfg_items[S_DispTrace],((int)file_menu[ID_HIDETRACE-100].bmflag ? 0:1)); + fprintf(fp,"set %s %d\n",cfg_items[S_AutoExit],(int)file_menu[ID_AUTOQUIT-100].bmflag); fclose(fp); } else { fprintf(stderr, "cannot open initializing file '%s'.\n", file); @@ -1695,20 +1902,126 @@ } #endif +/*ARGSUSED*/ +static void leaveSubmenu(Widget w, XEvent *e, String *v, Cardinal *n) { + XLeaveWindowEvent *leave_event = (XLeaveWindowEvent *)e; + Dimension height; + + XtVaGetValues(w,XtNheight,&height,NULL); + if (leave_event->x <= 0 || leave_event->y <= 0 || leave_event->y >= height) + XtPopdown(w); +} + +/*ARGSUSED*/ +static void checkRightAndPopupSubmenu(Widget w, XEvent *e, String *v, Cardinal *n) { + XLeaveWindowEvent *leave_ev = (XLeaveWindowEvent *)e; + Dimension nheight,height,width; + Position y; + int i; + + if(!maxentry_on_a_menu) return; + + if(e == NULL) + i= *(int *)n; + else + i= atoi(*v); + if(w != title_sm) { + if(leave_ev->x <= 0 || leave_ev->y < 0) { + XtPopdown(w); return; + } + } else { + if(leave_ev->x <= 0 || leave_ev->y <= 0) return; + } + if(psmenu[i] == NULL) return; + XtVaGetValues(psmenu[i],XtNheight,&height,NULL); + + /* neighbor menu height */ + XtVaGetValues((i>0)? psmenu[i-1]:title_sm, + XtNwidth,&width,XtNheight,&nheight,XtNy,&y,NULL); + if(leave_ev->x > 0 && leave_ev->y > nheight - 22) { + XtVaSetValues(psmenu[i],XtNx,leave_ev->x_root-60, + XtNy,y +((height)? nheight-height:0),NULL); + XtPopup(psmenu[i],XtGrabNone); + } +} + +/*ARGSUSED*/ +static void popdownSubmenuCB(Widget w,XtPointer data,XtPointer dummy) { + int i = (int)data; + + if (i < 0) i = submenu_n -1; + while(i >= 0) XtPopdown(psmenu[i--]); +} + +/*ARGSUSED*/ +static void popdownSubmenu(Widget w, XEvent *e, String *v, Cardinal *n) { + int i = atoi(*v); + + while(i >= 0) XtPopdown(psmenu[i--]); +} + +static void addOneFile(int max_files,int curr_num,char *fname) { + static Dimension tmpi = 0; + static int menu_height = 0; + static Widget tmpw; + static int j = 0; + char sbuf[256]; + + if (!maxentry_on_a_menu) tmpw = title_sm; + if(menu_height + tmpi*2 > root_height) { + if(!maxentry_on_a_menu) { + maxentry_on_a_menu = j = curr_num; + XtAddCallback(title_sm,XtNpopdownCallback,popdownSubmenuCB,(XtPointer)(submenu_n -1)); + } + if(j >= maxentry_on_a_menu) { + if (psmenu == NULL) + psmenu = (Widget *)safe_malloc(sizeof(Widget) * ((int)(max_files / curr_num)+ 2)); + else + psmenu = (Widget *)safe_realloc((char *)psmenu, sizeof(Widget)*(submenu_n + 2)); + sprintf(sbuf, "morebox%d", submenu_n); + pbox=XtVaCreateManagedWidget(sbuf,smeBSBObjectClass,tmpw,XtNlabel," More...", + XtNbackground,textbgcolor,XtNforeground,capcolor, + XtNrightBitmap,arrow_mark, + XtNfont,app_resources.label_font, NULL); + snprintf(sbuf,sizeof(sbuf), + ": unhighlight() checkRightAndPopupSubmenu(%d)",submenu_n); + XtOverrideTranslations(tmpw, XtParseTranslationTable(sbuf)); + + sprintf(sbuf, "psmenu%d", submenu_n); + psmenu[submenu_n] = XtVaCreatePopupShell(sbuf,simpleMenuWidgetClass,title_sm, + XtNforeground,textcolor, XtNbackground,textbgcolor, + XtNbackingStore,NotUseful,XtNsaveUnder,False, + XtNwidth,menu_width, + NULL); + snprintf(sbuf,sizeof(sbuf), ": popdownSubmenu(%d) notify() unhighlight()\n\ + : unhighlight()\n\ + : leaveSubmenu(%d) unhighlight()",submenu_n,submenu_n); + XtOverrideTranslations(psmenu[submenu_n],XtParseTranslationTable(sbuf)); + tmpw = psmenu[submenu_n++]; psmenu[submenu_n] = NULL; + j = 0; + } + } + if(maxentry_on_a_menu) j++; + bsb=XtVaCreateManagedWidget(fname,smeBSBObjectClass,tmpw,NULL); + XtAddCallback(bsb,XtNcallback,menuCB,(XtPointer)curr_num); + XtVaGetValues(bsb, XtNheight, &tmpi, NULL); + if(!maxentry_on_a_menu) menu_height += tmpi; + else psmenu[submenu_n] = NULL; +} + void a_start_interface(int pipe_in) { static XtActionsRec actions[] ={ {"do-quit",(XtActionProc)quitCB}, {"fix-menu", (XtActionProc)filemenuCB}, + {"do-menu", (XtActionProc)filemenuAction}, {"do-complete", (XtActionProc)completeDir}, {"do-chgdir", (XtActionProc)setDirAction}, {"draw-trace",(XtActionProc)redrawAction}, {"do-exchange",(XtActionProc)exchgWidth}, {"do-toggletrace",(XtActionProc)toggletrace}, {"do-revcaption",(XtActionProc)redrawCaption}, -#ifdef ENABLE_KEY_TRANSLATION {"do-dialog-button",(XtActionProc)popdownLoad}, {"do-load",(XtActionProc)popupLoad}, - {"do-save",(XtActionProc)saveconfigAction}, {"do-play",(XtActionProc)playCB}, {"do-sndspec",(XtActionProc)sndspecCB}, {"do-pause",(XtActionProc)pauseAction}, @@ -1720,10 +2033,14 @@ {"do-key",(XtActionProc)soundkeyAction}, {"do-speed",(XtActionProc)speedAction}, {"do-voice",(XtActionProc)voiceAction}, -#endif {"do-volset",(XtActionProc)volsetCB}, {"do-volupdown",(XtActionProc)volupdownAction}, + {"do-tuneset",(XtActionProc)tunesetAction}, + {"do-tuneslide",(XtActionProc)tuneslideAction}, {"do-resize",(XtActionProc)resizeAction}, + {"checkRightAndPopupSubmenu",checkRightAndPopupSubmenu}, + {"leaveSubmenu",leaveSubmenu}, + {"popdownSubmenu",popdownSubmenu}, }; static String fallback_resources[]={ @@ -1745,30 +2062,25 @@ "*button_box.borderWidth: 0", "*button_box.horizDistance: 4", "*file_menubutton.menuName: file_simplemenu", - "*file_menubutton.label: file...", "*file_menubutton.width: 60", "*file_menubutton.height: 28", "*file_menubutton.horizDistance: 6", "*file_menubutton.vertDistance: 4", - "*file_simplemenu.SmeBSB.font: -adobe-helvetica-medium-r-*-*-12-*-75-75-*-*-*-*", - "*title_simplemenu.SmeBSB.font: -adobe-helvetica-medium-r-*-*-12-*-75-75-*-*-*-*", - "*file_simplemenu.width: 196", - "*title_simplemenu.width: 200", + "*SmeBSB.font: -adobe-helvetica-medium-r-*-*-12-*-75-75-*-*-*-*", "*title_menubutton.menuName: title_simplemenu", - "*title_menubutton.label: ------", "*title_menubutton.width: 210", "*title_menubutton.height: 28", "*title_menubutton.resize: false", "*title_menubutton.horizDistance: 6", "*title_menubutton.vertDistance: 4", "*title_menubutton.fromHoriz: file_menubutton", - "*time_label.width: 96", + "*time_label.width: 92", "*time_label.height: 26", "*time_label.resize: false", "*time_label.fromHoriz: title_menubutton", "*time_label.horizDistance: 1", "*time_label.vertDistance: 4", - "*time_label.label: 00:00 / -----", + "*time_label.label: time / mode", "*button_box.height: 40", "*play_button.width: 32", "*play_button.height: 32", @@ -1810,18 +2122,17 @@ "*repeat_button.height: 32", "*repeat_button.horizDistance: 1", "*repeat_button.vertDistance: 1", - "*lyric_text.fromVert: volume_box", + "*lyric_text.fromVert: tune_box", "*lyric_text.borderWidth: 1" , "*lyric_text.vertDistance: 4", -#ifndef WIDGET_IS_LABEL_WIDGET "*lyric_text.horizDistance: 6", +#ifndef WIDGET_IS_LABEL_WIDGET "*lyric_text.height: 120", "*lyric_text.scrollVertical: WhenNeeded", #else "*lyric_text.height: 30", "*lyric_text.label: MessageWindow", "*lyric_text.resize: true", - "*lyric_text.horizDistance: 6", #endif #ifdef I18N "*lyric_text.international: True", @@ -1834,11 +2145,19 @@ "*volume_label.vertDistance: 0", "*volume_box.vertDistance: 2", "*volume_box.borderWidth: 0", - "*volume_label.font: -adobe-helvetica-bold-r-*-*-12-*-75-75-*-*-*-*", "*volume_label.borderWidth: 0", - "*volume_label.label: Volume 70", - "*volume_label.borderWIdth: 1", - "*volume_bar.length: 350", + "*volume_label.label: 70", + "*volume_bar.length: 330", + "*tune_box.height: 36", + "*tune_box.background: gray76", + "*tune_box.borderWidth: 0", + "*tune_label.label: ----", + "*tune_label.background: gray76", + "*tune_label.vertDistance: 0", + "*tune_label.horizDistance: 0", + "*tune_label0.horizDistance: 0", + "*tune_box.vertDistance: 2", + "*tune_bar.length: 330", "*popup_load.title: Timidity ", "*popup_loadform.height: 400", "*load_dialog.label: File Name", @@ -1846,7 +2165,6 @@ "*load_dialog*background: gray76", "*load_dialog.borderWidth: 0", "*load_dialog.height: 132", - "*cwd_label.background: gray85", "*trace.vertDistance: 2", "*trace.borderWidth: 1", "*trace_vport.borderWidth: 1", @@ -1856,7 +2174,7 @@ "*cwd_info.font: -adobe-helvetica-medium-r-*-*-12-*-75-75-*-*-*-*", "*cwd_info.background: gray76", "*BitmapDir: " DEFAULT_PATH "/bitmaps/", -#ifndef XAW3D +#ifdef XAW3D "*volume_bar.translations: #override\\n\ ~Ctrl Shift: do-volupdown(-50)\\n\ ~Ctrl Shift: do-volupdown(50)\\n\ @@ -1864,6 +2182,11 @@ Ctrl ~Shift: do-volupdown(5)\\n\ : MoveThumb()\\n\ : NotifyScroll(FullLength) EndScroll()", + "*tune_bar.translations: #override\\n\ + : do-tuneset()\\n\ + : do-tuneslide()\\n\ + : MoveThumb()\\n\ + : NotifyScroll(FullLength) EndScroll()", #else "*volume_bar.translations: #override\\n\ ~Ctrl Shift: do-volupdown(-50)\\n\ @@ -1873,16 +2196,24 @@ : StartScroll(Forward) MoveThumb()\\n\ : StartScroll(Backward) MoveThumb()\\n\ : NotifyScroll(FullLength) EndScroll()", + "*tune_bar.translations: #override\\n\ + : do-tuneset()\\n\ + : do-tuneslide()\\n\ + : StartScroll(Forward) MoveThumb()\\n\ + : StartScroll(Backward) MoveThumb()\\n\ + : NotifyScroll(FullLength) EndScroll()", #endif - -#ifdef ENABLE_KEY_TRANSLATION "*file_simplemenu.load.label: Load (Meta-N)", "*file_simplemenu.saveconfig.label: Save Config (Meta-S)", "*file_simplemenu.quit.label: Quit (Meta-Q, Q)", "*base_form.translations: #override\\n\ ~Ctrl Metan: do-load()\\n\ - ~Ctrl Metas: do-save()\\n\ + ~Ctrl Metas: do-menu(" IDS_SAVECONFIG ")\\n\ + Ctrl r: do-menu(" IDS_REPEAT ")\\n\ + Ctrl s: do-menu(" IDS_SHUFFLE ")\\n\ + Ctrlt: do-menu(" IDS_HIDETRACE ")\\n\ + Ctrlm: do-menu(" IDS_HIDETXT ")\\n\ ~Ctrlq: do-quit()\\n\ ~Ctrlr: do-play()\\n\ Return: do-play()\\n\ @@ -1914,16 +2245,16 @@ ~Ctrl ~MetaTab: do-complete() end-of-line()\\n\ Ctrl ~Shiftg: do-dialog-button(1)\\n\ Escape: do-dialog-button(1)", -#else - "*file_simplemenu.load.label: Load", - "*file_simplemenu.saveconfig.label: Save Config", - "*file_simplemenu.quit.label: Quit", -#endif "*trace.translations: #override\\n\ : do-toggletrace()\\n\ : do-revcaption()\\n\ : do-revcaption()\\n\ : draw-trace()", + "*title_simplemenu.translations: #override\\n\ + : unset()", + "*time_label.translations: #override\\n\ + : do-menu(" IDS_HIDETRACE ")\\n\ + : do-exchange()", NULL, }; XtAppContext app_con; @@ -1932,8 +2263,8 @@ int bmwidth, bmheight; int i, j, k, tmpi; int argc=1; - float thumb, l_thumb; - char *argv="timidity"; + float thumb, l_thumb, l_thumbj; + char *argv="timidity", *moretext, *filetext; XFontStruct *labelfont,*volumefont,*tracefont; #ifdef I18N #define XtNfontDEF XtNfontSet @@ -1943,6 +2274,8 @@ XFontStruct *textfont; #endif XawListReturnStruct lrs; + unsigned long gcmask; + XGCValues gcval; #ifdef DEBUG_PRINT_RESOURCE for(i=0; fallback_resources[i] != NULL; i++) { @@ -1962,23 +2295,29 @@ text_height = (Dimension)app_resources.text_height; trace_width = (Dimension)app_resources.trace_width; trace_height = (Dimension)app_resources.trace_height; + menu_width = (Dimension)app_resources.menu_width; labelfont = app_resources.label_font; volumefont = app_resources.volume_font; textfont = app_resources.text_font; tracefont = app_resources.trace_font; + ttitlefont = app_resources.ttitle_font; a_readconfig(&Cfg); disp = XtDisplay(toplevel); screen = DefaultScreen(disp); root_height = DisplayHeight(disp, screen); root_width = DisplayWidth(disp, screen); check_mark = XCreateBitmapFromData(XtDisplay(toplevel), - RootWindowOfScreen(XtScreen(toplevel)), - (char *) check_bits, - check_width,check_height); + RootWindowOfScreen(XtScreen(toplevel)), + (char *)check_bits, + check_width, check_height); + arrow_mark = XCreateBitmapFromData(XtDisplay(toplevel), + RootWindowOfScreen(XtScreen(toplevel)), + (char *)arrow_bits, + (unsigned int)arrow_width,arrow_height); for(i= 0; i < MAXBITMAP; i++) { snprintf(cbuf,sizeof(cbuf),"%s/%s",bitmapdir,bmfname[i]); XReadBitmapFile(disp,RootWindow(disp,screen),cbuf,&bm_width[i],&bm_height[i], - &bm_Pixmap[i],&x_hot,&y_hot); + &bm_Pixmap[i],&x_hot,&y_hot); } #ifndef STDC_HEADERS getwd(basepath); @@ -2007,24 +2346,41 @@ pancolor = app_resources.pan_color; tracecolor = app_resources.trace_bgcolor; } + if(ctl->trace_playing) { + gcmask = GCForeground | GCBackground | GCFont; + gcval.foreground = 1; + gcval.background = 1; + gcval.plane_mask = 1; +#ifdef I18N + XFontsOfFontSet(ttitlefont,&fs_list,&ml); + ttitlefont0 = fs_list[0]; + gcval.font = ttitlefont0->fid; +#else + gcval.font = ttitlefont->fid; +#endif + gcs = XCreateGC(disp, RootWindow(disp, screen), gcmask, &gcval); + } base_f=XtVaCreateManagedWidget("base_form",boxWidgetClass,toplevel, XtNbackground,bgcolor, XtNwidth,rotatewidth[currwidth], NULL); m_box=XtVaCreateManagedWidget("menu_box",boxWidgetClass,base_f, XtNorientation,XtorientHorizontal, XtNbackground,bgcolor, NULL); + filetext = app_resources.file_text; file_mb=XtVaCreateManagedWidget("file_menubutton",menuButtonWidgetClass,m_box, XtNforeground,textcolor, XtNbackground,menubcolor, - XtNfont,labelfont, NULL); + XtNfont,labelfont, XtNlabel,filetext, NULL); file_sm=XtVaCreatePopupShell("file_simplemenu",simpleMenuWidgetClass,file_mb, XtNforeground,textcolor, XtNbackground,textbgcolor, + XtNbackingStore,NotUseful, XtNsaveUnder,False, XtNwidth,menu_width, NULL); + snprintf(cbuf,sizeof(cbuf),"TiMidity++ %s",timidity_version); title_mb=XtVaCreateManagedWidget("title_menubutton",menuButtonWidgetClass,m_box, - XtNforeground,textcolor, XtNbackground,menubcolor, + XtNforeground,textcolor, XtNbackground,menubcolor,XtNlabel,cbuf, XtNfont,labelfont, NULL); title_sm=XtVaCreatePopupShell("title_simplemenu",simpleMenuWidgetClass,title_mb, XtNforeground,textcolor, XtNbackground,textbgcolor, - NULL); + XtNbackingStore,NotUseful, XtNsaveUnder,False, NULL); time_l=XtVaCreateManagedWidget("time_label",commandWidgetClass,m_box, XtNfont,labelfont, XtNbackground,menubcolor,NULL); @@ -2036,15 +2392,41 @@ XtNorientation,XtorientHorizontal, XtNwidth, TRACE_WIDTH_SHORT, XtNfromVert,b_box,XtNbackground,bgcolor, NULL); + t_box=XtVaCreateManagedWidget("tune_box",boxWidgetClass,base_f, + XtNorientation,XtorientHorizontal, + XtNwidth, TRACE_WIDTH_SHORT, + XtNfromVert,v_box,XtNbackground,bgcolor, NULL); + i = XTextWidth(volumefont,"Volume ",7)+8; + vol_l0=XtVaCreateManagedWidget("volume_label0",labelWidgetClass,v_box, + XtNwidth,i, XtNresize,False, + XtNfont,volumefont, XtNlabel, "Volume", XtNborderWidth,0, + XtNforeground,textcolor, XtNbackground,bgcolor, NULL); + VOLUME_LABEL_WIDTH = i+30; + j = XTextWidth(volumefont,"000",3)+8; + VOLUME_LABEL_WIDTH += j; vol_l=XtVaCreateManagedWidget("volume_label",labelWidgetClass,v_box, - XtNwidth, VOLUME_LABEL_WIDTH, - XtNfont,volumefont, + XtNwidth,j, XtNresize,False,XtNborderWidth,0, + XtNfont,volumefont, XtNorientation, XtorientHorizontal, XtNforeground,textcolor, XtNbackground,bgcolor, NULL); vol_bar=XtVaCreateManagedWidget("volume_bar",scrollbarWidgetClass,v_box, XtNorientation, XtorientHorizontal, - XtNwidth, TRACE_WIDTH_SHORT -VOLUME_LABEL_WIDTH -20, + XtNwidth, TRACE_WIDTH_SHORT -VOLUME_LABEL_WIDTH, XtNbackground,textbgcolor, XtNfromVert,vol_l, XtNtopOfThumb,&l_thumb, NULL); + i = XTextWidth(volumefont," 00:00",6); + tune_l0=XtVaCreateManagedWidget("tune_label0",labelWidgetClass,t_box, + XtNwidth,i, XtNresize,False, XtNlabel, " 0:00", + XtNfont,volumefont, XtNfromVert,vol_l,XtNborderWidth,0, + XtNforeground,textcolor, XtNbackground,bgcolor, NULL); + j = XTextWidth(volumefont,"/ 00:00",7); + tune_l=XtVaCreateManagedWidget("tune_label",labelWidgetClass,t_box, + XtNwidth,j, XtNresize,False, + XtNfont,volumefont, XtNfromVert,vol_l,XtNborderWidth,0, + XtNforeground,textcolor, XtNbackground,bgcolor, NULL); + tune_bar=XtVaCreateManagedWidget("tune_bar",scrollbarWidgetClass,t_box, + XtNwidth, TRACE_WIDTH_SHORT -i -j -30, + XtNbackground,textbgcolor,XtNorientation, XtorientHorizontal, + XtNfromVert,tune_l, XtNtopOfThumb,&l_thumbj, NULL); l_thumb = thumb = (float)amplitude / (float)MAXVOLUME; if (sizeof(thumb) > sizeof(XtArgVal)) { XtVaSetValues(vol_bar,XtNtopOfThumb,&thumb,NULL); @@ -2106,13 +2488,13 @@ XtNbackground,text2bgcolor, XtNresizable,True, NULL); load_vport = XtVaCreateManagedWidget("vport",viewportWidgetClass, popup_load_f, XtNfromVert,cwd_l, XtNallowHoriz,True, XtNallowVert,True, - XtNwidth,250, XtNheight,200, NULL); + XtNuseBottom,True, XtNwidth,250, XtNheight,200, NULL); load_flist = XtVaCreateManagedWidget("files",listWidgetClass,load_vport, XtNverticalList,True, XtNforceColumns,False, XtNdefaultColumns, 3, NULL); load_info = XtVaCreateManagedWidget("cwd_info",labelWidgetClass,popup_load_f, XtNborderWidth,0, XtNwidth,250, XtNheight,32, - XtNbackground,text2bgcolor, XtNfromVert,load_vport, NULL); + XtNbackground,text2bgcolor, XtNfromVert,load_vport, NULL); XawDialogAddButton(load_d, "OK", popdownLoad,"Y"); XawDialogAddButton(load_d, "Cancel", popdownLoad,NULL); #ifndef WIDGET_IS_LABEL_WIDGET @@ -2121,16 +2503,16 @@ XtNwidth, rotatewidth[currwidth]-10, #else lyric_t=XtVaCreateManagedWidget("lyric_text",labelWidgetClass,base_f, - XtNresize, False, + XtNresize,False, XtNforeground,textcolor, XtNbackground,menubcolor, XtNwidth,rotatewidth[currwidth]-10, #endif XtNfontDEF,textfont, XtNheight,text_height, - XtNfromVert,v_box, NULL); + XtNfromVert,t_box, NULL); if(ctl->trace_playing) { trace_vport = XtVaCreateManagedWidget("trace_vport",viewportWidgetClass, base_f, XtNallowHoriz,True, XtNallowVert,True, - XtNuseBottom,True,XtNfromVert,lyric_t, + XtNuseBottom,True, XtNfromVert,lyric_t, #ifdef WIDGET_IS_LABEL_WIDGET XtNuseRight,True, #endif @@ -2153,7 +2535,7 @@ XtAddCallback(vol_bar,XtNscrollProc,volupdownCB,NULL); XtAppAddInput(app_con,pipe_in,(XtPointer)XtInputReadMask,handle_input,NULL); XtAddCallback(load_flist,XtNcallback,(XtCallbackProc)setDirList,cwd_l); - XtAddCallback(time_l,XtNcallback,(XtCallbackProc)exchgWidthCB,NULL); + XtAddCallback(time_l,XtNcallback,(XtCallbackProc)filemenuAction,NULL); XtRealizeWidget(toplevel); dirlist =(String *)malloc(sizeof(String)* MAX_DIRECTORY_ENTRY); @@ -2165,11 +2547,11 @@ if(ctl->trace_playing) XtSetKeyboardFocus(trace, base_f); XtSetKeyboardFocus(popup_load, load_d); - XtOverrideTranslations (toplevel, - XtParseTranslationTable ("WM_PROTOCOLS: do-quit()")); + XtOverrideTranslations(toplevel, + XtParseTranslationTable("WM_PROTOCOLS: do-quit()")); snprintf(cbuf,sizeof(cbuf),"%s/%s",bitmapdir,iconname); XReadBitmapFile(disp,RootWindow(disp,screen),cbuf, - &bmwidth,&bmheight,&bmPixmap,&x_hot,&y_hot); + &bmwidth,&bmheight,&bmPixmap,&x_hot,&y_hot); XtVaSetValues(toplevel,XtNiconPixmap,bmPixmap,NULL); strcpy(window_title,APP_CLASS); w_title = strncat(window_title," : ",3); @@ -2261,6 +2643,7 @@ } initStatus(); XFreeGC(disp,gc); + voices_num_width = XTextWidth(tracefont,"Voices",6) +VOICES_NUM_OFS; } while (1) { a_pipe_read(local_buf,sizeof(local_buf)); @@ -2271,22 +2654,21 @@ max_files=atoi(local_buf); for (i=0;itrace_playing) { - Dimension w2,h2; + Dimension w2,h2,h; XtVaSetValues(file_menu[ID_HIDETRACE-100].widget,XtNsensitive,False,NULL); XtVaSetValues(lyric_t,XtNwidth,TRACE_WIDTH_SHORT -12,NULL); - XtVaGetValues(toplevel,XtNheight,&i,NULL); - XtMakeResizeRequest(toplevel,TRACE_WIDTH_SHORT,i,&w2,&h2); + XtVaGetValues(toplevel,XtNheight,&h,NULL); + XtMakeResizeRequest(toplevel,TRACE_WIDTH_SHORT,h,&w2,&h2); } /* Please sleep here to make widgets arrange by Form Widget, * otherwise the widget geometry is broken. @@ -2298,13 +2680,17 @@ } if(Cfg.autostart) filemenuCB(file_menu[ID_AUTOSTART-100].widget, - &file_menu[ID_AUTOSTART-100].id,NULL); + &file_menu[ID_AUTOSTART-100].id,NULL); + if(Cfg.autoexit) { + filemenuCB(file_menu[ID_AUTOQUIT-100].widget, + &file_menu[ID_AUTOQUIT-100].id,NULL); + } if(Cfg.hidetext) filemenuCB(file_menu[ID_HIDETXT-100].widget, &file_menu[ID_HIDETXT-100].id,NULL); if(!Cfg.disptrace) filemenuCB(file_menu[ID_HIDETRACE-100].widget, - &file_menu[ID_HIDETRACE-100].id,NULL); + &file_menu[ID_HIDETRACE-100].id,NULL); if(Cfg.repeat) repeatCB(NULL,&Cfg.repeat,NULL); if(Cfg.shuffle) randomCB(NULL,&Cfg.shuffle,NULL); diff -ruN TiMidity++-1.3.2/libarc/arc.c TiMidity++-1.3.3/libarc/arc.c --- TiMidity++-1.3.2/libarc/arc.c Tue Dec 22 20:23:50 1998 +++ TiMidity++-1.3.3/libarc/arc.c Mon Feb 22 17:42:11 1999 @@ -634,7 +634,7 @@ break; case ARCHIVEC_DEFLATED: - n = inflate((InflateHandler)decoder, buff, bufsiz); + n = zip_inflate((InflateHandler)decoder, buff, bufsiz); break; case ARCHIVEC_IMPLODED_LIT8: diff -ruN TiMidity++-1.3.2/libarc/arc.h TiMidity++-1.3.3/libarc/arc.h --- TiMidity++-1.3.2/libarc/arc.h Wed Jan 27 12:16:16 1999 +++ TiMidity++-1.3.3/libarc/arc.h Mon Feb 22 17:43:29 1999 @@ -5,7 +5,7 @@ #include "memb.h" -#define ARC_LIB_VERSION "1.4.11" +#define ARC_LIB_VERSION "1.4.12" #define ARC_DEFLATE_LEVEL 6 /* 1:Compress faster .. 9:Compress better */ typedef struct _ArchiveStreamURL diff -ruN TiMidity++-1.3.2/libarc/arc_tar.c TiMidity++-1.3.3/libarc/arc_tar.c --- TiMidity++-1.3.2/libarc/arc_tar.c Mon Nov 2 12:29:06 1998 +++ TiMidity++-1.3.3/libarc/arc_tar.c Mon Feb 22 17:42:38 1999 @@ -88,7 +88,7 @@ compsize = 0; encoder = open_deflate_handler(archiver_read_func, archiver, ARC_DEFLATE_LEVEL); - while((n = deflate(encoder, buff, sizeof(buff))) > 0) + while((n = zip_deflate(encoder, buff, sizeof(buff))) > 0) { push_memb(&entry->u.compdata, buff, n); compsize += n; diff -ruN TiMidity++-1.3.2/libarc/deflate.c TiMidity++-1.3.3/libarc/deflate.c --- TiMidity++-1.3.2/libarc/deflate.c Mon Nov 2 12:29:06 1998 +++ TiMidity++-1.3.3/libarc/deflate.c Mon Feb 22 17:42:49 1999 @@ -1018,7 +1018,7 @@ * evaluation for matches: a match is finally adopted only if there is * no better match at the next window position. */ -long deflate(DeflateHandler encoder, char *buff, long buff_size) +long zip_deflate(DeflateHandler encoder, char *buff, long buff_size) { long n; diff -ruN TiMidity++-1.3.2/libarc/inflate.c TiMidity++-1.3.3/libarc/inflate.c --- TiMidity++-1.3.2/libarc/inflate.c Mon Nov 2 12:29:06 1998 +++ TiMidity++-1.3.3/libarc/inflate.c Mon Feb 22 17:42:19 1999 @@ -888,7 +888,7 @@ } /* decompress an inflated entry */ -long inflate( +long zip_inflate( InflateHandler decoder, char *buff, long size) diff -ruN TiMidity++-1.3.2/libarc/url.h TiMidity++-1.3.3/libarc/url.h --- TiMidity++-1.3.2/libarc/url.h Thu Feb 4 14:37:29 1999 +++ TiMidity++-1.3.3/libarc/url.h Mon Feb 22 17:43:37 1999 @@ -6,7 +6,7 @@ * http://www.goice.co.jp/member/mo/release/index.html#liburl */ -#define URL_LIB_VERSION "1.8.7" +#define URL_LIB_VERSION "1.8.8" /* Define if you want to enable pipe command scheme ("command|") */ #define PIPE_SCHEME_ENABLE diff -ruN TiMidity++-1.3.2/libarc/url_dir.c TiMidity++-1.3.3/libarc/url_dir.c --- TiMidity++-1.3.2/libarc/url_dir.c Thu Feb 4 16:02:32 1999 +++ TiMidity++-1.3.3/libarc/url_dir.c Wed Feb 24 17:49:12 1999 @@ -11,7 +11,6 @@ #include "timidity.h" #include "url.h" - #ifdef __W32READDIR__ #include "readdir.h" # define NAMLEN(dirent) strlen((dirent)->d_name) @@ -39,7 +38,15 @@ #ifdef URL_DIR_CACHE_ENABLE #include +#ifdef HAVE_FCNTL_H +#include +#endif /* HAVE_FCNTL_H */ #include "strtab.h" + +#ifndef S_ISDIR +#define S_ISDIR(mode) (((mode)&0xF000) == 0x4000) +#endif /* S_ISDIR */ + struct dir_cache_t { char **fnames; diff -ruN TiMidity++-1.3.2/libarc/url_inflate.c TiMidity++-1.3.3/libarc/url_inflate.c --- TiMidity++-1.3.2/libarc/url_inflate.c Mon Nov 2 12:29:06 1998 +++ TiMidity++-1.3.3/libarc/url_inflate.c Mon Feb 22 17:42:27 1999 @@ -90,7 +90,7 @@ { URL_inflate *urlp = (URL_inflate *)url; - n = inflate(urlp->decoder, (char *)buff, n); + n = zip_inflate(urlp->decoder, (char *)buff, n); if(n <= 0) return n; urlp->pos += n; diff -ruN TiMidity++-1.3.2/libarc/zip.h TiMidity++-1.3.3/libarc/zip.h --- TiMidity++-1.3.2/libarc/zip.h Mon Nov 2 12:29:06 1998 +++ TiMidity++-1.3.3/libarc/zip.h Mon Feb 22 17:43:06 1999 @@ -75,7 +75,7 @@ void *user_val, int compression_level); -extern long deflate(DeflateHandler encoder, +extern long zip_deflate(DeflateHandler encoder, char *decode_buff, long decode_buff_size); @@ -87,7 +87,7 @@ long (* read_func)(char *buf, long size, void *user_val), void *user_val); -extern long inflate(InflateHandler decoder, +extern long zip_inflate(InflateHandler decoder, char *decode_buff, long decode_buff_size); diff -ruN TiMidity++-1.3.2/stamp-h1.in TiMidity++-1.3.3/stamp-h1.in --- TiMidity++-1.3.2/stamp-h1.in Wed Feb 10 13:06:10 1999 +++ TiMidity++-1.3.3/stamp-h1.in Wed Feb 24 15:24:33 1999 @@ -1 +0,0 @@ -timestamp diff -ruN TiMidity++-1.3.2/stamp-h2.in TiMidity++-1.3.3/stamp-h2.in --- TiMidity++-1.3.2/stamp-h2.in Wed Feb 10 13:06:13 1999 +++ TiMidity++-1.3.3/stamp-h2.in Wed Feb 24 15:24:33 1999 @@ -1 +0,0 @@ -timestamp diff -ruN TiMidity++-1.3.2/timidity/audriv_none.c TiMidity++-1.3.3/timidity/audriv_none.c --- TiMidity++-1.3.2/timidity/audriv_none.c Mon Nov 30 17:26:17 1998 +++ TiMidity++-1.3.3/timidity/audriv_none.c Mon Feb 22 16:06:51 1999 @@ -198,14 +198,6 @@ return output_port; } -int audriv_get_record_volume(void) -/* 録音音量を 0 〜 255 内で得ます.0 は無音,255 は最大音量. - * 失敗すると -1 を返し,そうでない場合は 0 〜 255 内の音量を返します. - */ -{ - return record_volume; -} - int audriv_write(char *buff, int n) /* audio に buff を n バイト分流し込みます. * audriv_set_noblock_write() で非ブロック・モードが設定された diff -ruN TiMidity++-1.3.2/timidity/playmidi.c TiMidity++-1.3.3/timidity/playmidi.c --- TiMidity++-1.3.2/timidity/playmidi.c Sun Feb 7 09:06:05 1999 +++ TiMidity++-1.3.3/timidity/playmidi.c Wed Feb 17 12:23:48 1999 @@ -422,7 +422,11 @@ channel[i].mapID = get_default_mapID(i); } if(playing) + { kill_all_voices(); + for(i = 0; i < MAX_CHANNELS; i++) + redraw_controllers(i); + } else reset_voices(); #ifdef PRESENCE_HACK diff -ruN TiMidity++-1.3.2/timidity/readmidi.c TiMidity++-1.3.3/timidity/readmidi.c --- TiMidity++-1.3.2/timidity/readmidi.c Tue Feb 2 15:57:21 1999 +++ TiMidity++-1.3.3/timidity/readmidi.c Mon Feb 22 17:43:14 1999 @@ -2157,7 +2157,7 @@ if((compressor = open_deflate_handler(deflate_url_reader, url, ARC_DEFLATE_LEVEL)) == NULL) return; - while((n = deflate(compressor, buff, sizeof(buff))) > 0) + while((n = zip_deflate(compressor, buff, sizeof(buff))) > 0) push_memb(&b, buff, n); close_deflate_handler(compressor); infop->compressed = 1; diff -ruN TiMidity++-1.3.2/timidity/timidity.c TiMidity++-1.3.3/timidity/timidity.c --- TiMidity++-1.3.2/timidity/timidity.c Fri Feb 5 13:51:44 1999 +++ TiMidity++-1.3.3/timidity/timidity.c Mon Feb 22 16:34:00 1999 @@ -51,6 +51,9 @@ #ifdef HAVE_GETOPT_H #include +#else +extern int optind; +extern char *optarg; #endif /* HAVE_GETOPT_H */ #include "interface.h" diff -ruN TiMidity++-1.3.2/timidity/timidity.h TiMidity++-1.3.3/timidity/timidity.h --- TiMidity++-1.3.2/timidity/timidity.h Tue Feb 9 15:01:41 1999 +++ TiMidity++-1.3.3/timidity/timidity.h Wed Feb 24 15:17:59 1999 @@ -345,13 +345,19 @@ #include + #ifdef HAVE_ERRNO_H #include #endif /* HAVE_ERRNO_H */ +extern int errno; + #ifdef HAVE_MACHINE_ENDIAN_H #include /* for __byte_swap_*() */ #endif +#ifdef HAVE_SYS_TYPES_H +#include +#endif /* HAVE_SYS_TYPES_H */ #ifndef NO_VOLATILE #define VOLATILE_TOUCH(val) /* do nothing */ @@ -534,7 +540,6 @@ /* Solaris */ int usleep(unsigned int useconds); /* shut gcc warning up */ #endif - extern int errno; extern int opterr; extern int optind; extern int optopt; @@ -637,8 +642,20 @@ extern int usleep(unsigned int usec); #endif -#ifndef HAVE_SLEEP -#define sleep(sec) usleep(sec * 1000000) -#endif /* HAVE_SLEEP */ +#ifndef HAVE_STRDUP +extern char *strdup(const char *s); +#endif /* HAVE_STRDUP */ + +#ifndef HAVE_GETCWD +extern char *getcwd(char *buf, size_t size); +#endif /* HAVE_GETCWD */ + +#ifndef HAVE_STRSTR +#define strstr(s,c) index(s,c) +#endif /* HAVE_STRSTR */ + +#ifndef HAVE_STRNCASECMP +int strncasecmp(char *s1, char *s2, unsigned int len); +#endif /* HAVE_STRNCASECMP */ #endif /* ___TIMIDITY_H_ */ diff -ruN TiMidity++-1.3.2/timidity/win_a.c TiMidity++-1.3.3/timidity/win_a.c --- TiMidity++-1.3.2/timidity/win_a.c Fri Feb 5 14:14:32 1999 +++ TiMidity++-1.3.3/timidity/win_a.c Wed Feb 24 17:38:46 1999 @@ -39,12 +39,11 @@ #include #if defined(__CYGWIN32__) || defined(__MINGW32__) -#define HAVE_WAVEFORMAT_CBSIZE -/* On cygnus, there is no header file for Multimedia API's. */ -/* Then declare some of them here. */ +/* On cygnus, there is not mmsystem.h for Multimedia API's. + * mmsystem.h can not distribute becase of Microsoft Lisence + * Then declare some of them here. + */ -#define NEAR -#define FAR #define WOM_OPEN 0x3BB #define WOM_CLOSE 0x3BC #define WOM_DONE 0x3BD @@ -53,6 +52,7 @@ #define WAVE_FORMAT_PCM 1 #define CALLBACK_FUNCTION 0x00030000l #define WAVERR_BASE 32 +#define WAVE_MAPPER (UINT)-1 DECLARE_HANDLE(HWAVEOUT); DECLARE_HANDLE(HWAVE); @@ -66,7 +66,7 @@ DWORD dwUser; DWORD dwFlags; DWORD dwLoops; - struct wavehdr_tag FAR *lpNext; + struct wavehdr_tag *lpNext; DWORD reserved; } WAVEHDR; @@ -76,9 +76,7 @@ DWORD nSamplesPerSec; DWORD nAvgBytesPerSec; WORD nBlockAlign; -#ifdef HAVE_WAVEFORMAT_CBSIZE WORD cbSize; -#endif } WAVEFORMAT; typedef struct { @@ -86,8 +84,20 @@ WORD wBitsPerSample; } PCMWAVEFORMAT; +typedef struct waveoutcaps_tag { + WORD wMid; + WORD wPid; + UINT vDriverVersion; +#define MAXPNAMELEN 32 + char szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + DWORD dwSupport; +} WAVEOUTCAPS; + typedef WAVEHDR *LPWAVEHDR; typedef WAVEFORMAT *LPWAVEFORMAT; +typedef WAVEOUTCAPS *LPWAVEOUTCAPS; typedef UINT MMRESULT; MMRESULT WINAPI waveOutOpen(LPHWAVEOUT, UINT, @@ -97,7 +107,12 @@ MMRESULT WINAPI waveOutUnprepareHeader(HWAVEOUT, LPWAVEHDR, UINT); MMRESULT WINAPI waveOutWrite(HWAVEOUT, LPWAVEHDR, UINT); UINT WINAPI waveOutGetNumDevs(void); + MMRESULT WINAPI waveOutReset(HWAVEOUT); +MMRESULT WINAPI waveOutGetDevCaps(UINT, LPWAVEOUTCAPS, UINT); +MMRESULT WINAPI waveOutGetDevCapsA(UINT, LPWAVEOUTCAPS, UINT); +#define waveOutGetDevCaps waveOutGetDevCapsA +MMRESULT WINAPI waveOutGetID(HWAVEOUT, UINT*); #endif /* __CYGWIN32__ */ @@ -125,7 +140,6 @@ #define DATA_BLOCK_SIZE (2*AUDIO_BUFFER_SIZE) #define DATA_BLOCK_NUM (dpm.extra_param[0]) -#define DATA_MIN_NBLOCKS (DATA_BLOCK_NUM-1) struct data_block_t { @@ -200,7 +214,9 @@ { int i, j, mono, eight_bit, warnings = 0; PCMWAVEFORMAT pcm; + WAVEOUTCAPS caps; MMRESULT res; + UINT devid; play_counter = reset_samples = 0; @@ -240,15 +256,13 @@ pcm.wf.nAvgBytesPerSec = i; pcm.wf.nBlockAlign = j; pcm.wBitsPerSample = eight_bit ? 8 : 16; -#ifdef HAVE_WAVEFORMAT_CBSIZE pcm.wf.cbSize=sizeof(WAVEFORMAT); -#endif dev = 0; if (win32_wave_allowsync) - res = waveOutOpen (&dev, 0, (LPWAVEFORMAT)&pcm, (DWORD)wave_callback, 0, CALLBACK_FUNCTION | WAVE_ALLOWSYNC); + res = waveOutOpen (&dev, WAVE_MAPPER, (LPWAVEFORMAT)&pcm, (DWORD)wave_callback, 0, CALLBACK_FUNCTION | WAVE_ALLOWSYNC); else - res = waveOutOpen (&dev, 0, (LPWAVEFORMAT)&pcm, (DWORD)wave_callback, 0, CALLBACK_FUNCTION); + res = waveOutOpen (&dev, WAVE_MAPPER, (LPWAVEFORMAT)&pcm, (DWORD)wave_callback, 0, CALLBACK_FUNCTION); if (res) { ctl->cmsg(CMSG_ERROR, VERB_NORMAL, @@ -259,6 +273,28 @@ return -1; } + devid = 0; + memset(&caps, 0, sizeof(WAVEOUTCAPS)); + waveOutGetID(dev, &devid); + res = waveOutGetDevCaps(devid, &caps, sizeof(WAVEOUTCAPS)); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, + "Play Device ID: %d", devid); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, + "Manufacture ID: %d"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, + "Product ID: %d", caps.wPid); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, + "Version of the driver: %d", caps.vDriverVersion); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, + "Product name: %s", caps.szPname); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, + "Formats supported: 0x%x", caps.dwFormats); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, + "number of sources supported: %d", caps.wChannels); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, + "functionality supported by driver: 0x%x", caps.dwSupport); + + /* Prepere audio queue buffer */ all_data_block = (struct data_block_t *) safe_malloc(DATA_BLOCK_NUM * sizeof(struct data_block_t)); for(i = 0; i < DATA_BLOCK_NUM; i++) @@ -271,6 +307,7 @@ block->head = GlobalLock(block->head_hg); } reset_data_block(); + dpm.fd = 0; return warnings; } diff -ruN TiMidity++-1.3.2/utils/support.c TiMidity++-1.3.3/utils/support.c --- TiMidity++-1.3.2/utils/support.c Wed Feb 3 17:20:29 1999 +++ TiMidity++-1.3.3/utils/support.c Wed Feb 24 15:20:06 1999 @@ -29,6 +29,9 @@ #include #include +#ifdef HAVE_UNISTD_H +#include +#endif /* HAVE_UNISTD_H */ #include #include #include @@ -41,9 +44,14 @@ #include #endif /* __WIN32__ */ +#ifdef HAVE_SYS_PARAM_H +#include +#endif /* HAVE_SYS_PARAM_H */ + #include "timidity.h" #include "mblock.h" + #ifndef HAVE_VSNPRINTF /* From glib-1.1.13:gstrfuncs.c * Modified by Masanao Izumo @@ -197,6 +205,7 @@ } #endif /* HAVE_VSNPRINTF */ + #ifndef HAVE_SNPRINTF void snprintf(char *buff, size_t bufsiz, const char *fmt, ...) { @@ -357,372 +366,376 @@ return s; } #else + char *strerror(int errnum) { - switch(errnum) { + int i; + static char s[32]; + struct { + int id; + char *str; + } error_list[] = { #ifdef EPERM - case EPERM: return "Not super-user"; + {EPERM, "Not super-user"}, #endif /* EPERM */ #ifdef ENOENT - case ENOENT: return "No such file or directory"; + {ENOENT, "No such file or directory"}, #endif /* ENOENT */ #ifdef ESRCH - case ESRCH: return "No such process"; + {ESRCH, "No such process"}, #endif /* ESRCH */ #ifdef EINTR - case EINTR: return "interrupted system call"; + {EINTR, "interrupted system call"}, #endif /* EINTR */ #ifdef EIO - case EIO: return "I/O error"; + {EIO, "I/O error"}, #endif /* EIO */ #ifdef ENXIO - case ENXIO: return "No such device or address"; + {ENXIO, "No such device or address"}, #endif /* ENXIO */ #ifdef E2BIG - case E2BIG: return "Arg list too long"; + {E2BIG, "Arg list too long"}, #endif /* E2BIG */ #ifdef ENOEXEC - case ENOEXEC: return "Exec format error"; + {ENOEXEC, "Exec format error"}, #endif /* ENOEXEC */ #ifdef EBADF - case EBADF: return "Bad file number"; + {EBADF, "Bad file number"}, #endif /* EBADF */ #ifdef ECHILD - case ECHILD: return "No children"; + {ECHILD, "No children"}, #endif /* ECHILD */ #ifdef EAGAIN - case EAGAIN: return "Resource temporarily unavailable"; + {EAGAIN, "Resource temporarily unavailable"}, #endif /* EAGAIN */ #ifdef EWOULDBLOCK -#if !defined(EAGAIN) || defined(EAGAIN) && EAGAIN != EWOULDBLOCK - case EWOULDBLOCK: return "Resource temporarily unavailable"; -#endif + {EWOULDBLOCK, "Resource temporarily unavailable"}, #endif /* EWOULDBLOCK */ #ifdef ENOMEM - case ENOMEM: return "Not enough core"; + {ENOMEM, "Not enough core"}, #endif /* ENOMEM */ #ifdef EACCES - case EACCES: return "Permission denied"; + {EACCES, "Permission denied"}, #endif /* EACCES */ #ifdef EFAULT - case EFAULT: return "Bad address"; + {EFAULT, "Bad address"}, #endif /* EFAULT */ #ifdef ENOTBLK - case ENOTBLK: return "Block device required"; + {ENOTBLK, "Block device required"}, #endif /* ENOTBLK */ #ifdef EBUSY - case EBUSY: return "Mount device busy"; + {EBUSY, "Mount device busy"}, #endif /* EBUSY */ #ifdef EEXIST - case EEXIST: return "File exists"; + {EEXIST, "File exists"}, #endif /* EEXIST */ #ifdef EXDEV - case EXDEV: return "Cross-device link"; + {EXDEV, "Cross-device link"}, #endif /* EXDEV */ #ifdef ENODEV - case ENODEV: return "No such device"; + {ENODEV, "No such device"}, #endif /* ENODEV */ #ifdef ENOTDIR - case ENOTDIR: return "Not a directory"; + {ENOTDIR, "Not a directory"}, #endif /* ENOTDIR */ #ifdef EISDIR - case EISDIR: return "Is a directory"; + {EISDIR, "Is a directory"}, #endif /* EISDIR */ #ifdef EINVAL - case EINVAL: return "Invalid argument"; + {EINVAL, "Invalid argument"}, #endif /* EINVAL */ #ifdef ENFILE - case ENFILE: return "File table overflow"; + {ENFILE, "File table overflow"}, #endif /* ENFILE */ #ifdef EMFILE - case EMFILE: return "Too many open files"; + {EMFILE, "Too many open files"}, #endif /* EMFILE */ #ifdef ENOTTY - case ENOTTY: return "Inappropriate ioctl for device"; + {ENOTTY, "Inappropriate ioctl for device"}, #endif /* ENOTTY */ #ifdef ETXTBSY - case ETXTBSY: return "Text file busy"; + {ETXTBSY, "Text file busy"}, #endif /* ETXTBSY */ #ifdef EFBIG - case EFBIG: return "File too large"; + {EFBIG, "File too large"}, #endif /* EFBIG */ #ifdef ENOSPC - case ENOSPC: return "No space left on device"; + {ENOSPC, "No space left on device"}, #endif /* ENOSPC */ #ifdef ESPIPE - case ESPIPE: return "Illegal seek"; + {ESPIPE, "Illegal seek"}, #endif /* ESPIPE */ #ifdef EROFS - case EROFS: return "Read only file system"; + {EROFS, "Read only file system"}, #endif /* EROFS */ #ifdef EMLINK - case EMLINK: return "Too many links"; + {EMLINK, "Too many links"}, #endif /* EMLINK */ #ifdef EPIPE - case EPIPE: return "Broken pipe"; + {EPIPE, "Broken pipe"}, #endif /* EPIPE */ #ifdef EDOM - case EDOM: return "Math arg out of domain of func"; + {EDOM, "Math arg out of domain of func"}, #endif /* EDOM */ #ifdef ERANGE - case ERANGE: return "Math result not representable"; + {ERANGE, "Math result not representable"}, #endif /* ERANGE */ #ifdef ENOMSG - case ENOMSG: return "No message of desired type"; + {ENOMSG, "No message of desired type"}, #endif /* ENOMSG */ #ifdef EIDRM - case EIDRM: return "Identifier removed"; + {EIDRM, "Identifier removed"}, #endif /* EIDRM */ #ifdef ECHRNG - case ECHRNG: return "Channel number out of range"; + {ECHRNG, "Channel number out of range"}, #endif /* ECHRNG */ #ifdef EL2NSYNC - case EL2NSYNC: return "Level 2 not synchronized"; + {EL2NSYNC, "Level 2 not synchronized"}, #endif /* EL2NSYNC */ #ifdef EL3HLT - case EL3HLT: return "Level 3 halted"; + {EL3HLT, "Level 3 halted"}, #endif /* EL3HLT */ #ifdef EL3RST - case EL3RST: return "Level 3 reset"; + {EL3RST, "Level 3 reset"}, #endif /* EL3RST */ #ifdef ELNRNG - case ELNRNG: return "Link number out of range"; + {ELNRNG, "Link number out of range"}, #endif /* ELNRNG */ #ifdef EUNATCH - case EUNATCH: return "Protocol driver not attached"; + {EUNATCH, "Protocol driver not attached"}, #endif /* EUNATCH */ #ifdef ENOCSI - case ENOCSI: return "No CSI structure available"; + {ENOCSI, "No CSI structure available"}, #endif /* ENOCSI */ #ifdef EL2HLT - case EL2HLT: return "Level 2 halted"; + {EL2HLT, "Level 2 halted"}, #endif /* EL2HLT */ #ifdef EDEADLK - case EDEADLK: return "Deadlock condition."; + {EDEADLK, "Deadlock condition."}, #endif /* EDEADLK */ #ifdef ENOLCK - case ENOLCK: return "No record locks available."; + {ENOLCK, "No record locks available."}, #endif /* ENOLCK */ #ifdef ECANCELED - case ECANCELED: return "Operation canceled"; + {ECANCELED, "Operation canceled"}, #endif /* ECANCELED */ #ifdef ENOTSUP - case ENOTSUP: return "Operation not supported"; + {ENOTSUP, "Operation not supported"}, #endif /* ENOTSUP */ #ifdef EDQUOT - case EDQUOT: return "Disc quota exceeded"; + {EDQUOT, "Disc quota exceeded"}, #endif /* EDQUOT */ #ifdef EBADE - case EBADE: return "invalid exchange"; + {EBADE, "invalid exchange"}, #endif /* EBADE */ #ifdef EBADR - case EBADR: return "invalid request descriptor"; + {EBADR, "invalid request descriptor"}, #endif /* EBADR */ #ifdef EXFULL - case EXFULL: return "exchange full"; + {EXFULL, "exchange full"}, #endif /* EXFULL */ #ifdef ENOANO - case ENOANO: return "no anode"; + {ENOANO, "no anode"}, #endif /* ENOANO */ #ifdef EBADRQC - case EBADRQC: return "invalid request code"; + {EBADRQC, "invalid request code"}, #endif /* EBADRQC */ #ifdef EBADSLT - case EBADSLT: return "invalid slot"; + {EBADSLT, "invalid slot"}, #endif /* EBADSLT */ #ifdef EDEADLOCK - case EDEADLOCK: return "file locking deadlock error"; + {EDEADLOCK, "file locking deadlock error"}, #endif /* EDEADLOCK */ #ifdef EBFONT - case EBFONT: return "bad font file fmt"; + {EBFONT, "bad font file fmt"}, #endif /* EBFONT */ #ifdef ENOSTR - case ENOSTR: return "Device not a stream"; + {ENOSTR, "Device not a stream"}, #endif /* ENOSTR */ #ifdef ENODATA - case ENODATA: return "no data (for no delay io)"; + {ENODATA, "no data (for no delay io)"}, #endif /* ENODATA */ #ifdef ETIME - case ETIME: return "timer expired"; + {ETIME, "timer expired"}, #endif /* ETIME */ #ifdef ENOSR - case ENOSR: return "out of streams resources"; + {ENOSR, "out of streams resources"}, #endif /* ENOSR */ #ifdef ENONET - case ENONET: return "Machine is not on the network"; + {ENONET, "Machine is not on the network"}, #endif /* ENONET */ #ifdef ENOPKG - case ENOPKG: return "Package not installed"; + {ENOPKG, "Package not installed"}, #endif /* ENOPKG */ #ifdef EREMOTE - case EREMOTE: return "The object is remote"; + {EREMOTE, "The object is remote"}, #endif /* EREMOTE */ #ifdef ENOLINK - case ENOLINK: return "the link has been severed"; + {ENOLINK, "the link has been severed"}, #endif /* ENOLINK */ #ifdef EADV - case EADV: return "advertise error"; + {EADV, "advertise error"}, #endif /* EADV */ #ifdef ESRMNT - case ESRMNT: return "srmount error"; + {ESRMNT, "srmount error"}, #endif /* ESRMNT */ #ifdef ECOMM - case ECOMM: return "Communication error on send"; + {ECOMM, "Communication error on send"}, #endif /* ECOMM */ #ifdef EPROTO - case EPROTO: return "Protocol error"; + {EPROTO, "Protocol error"}, #endif /* EPROTO */ #ifdef EMULTIHOP - case EMULTIHOP: return "multihop attempted"; + {EMULTIHOP, "multihop attempted"}, #endif /* EMULTIHOP */ #ifdef EBADMSG - case EBADMSG: return "trying to read unreadable message"; + {EBADMSG, "trying to read unreadable message"}, #endif /* EBADMSG */ #ifdef ENAMETOOLONG - case ENAMETOOLONG: return "path name is too long"; + {ENAMETOOLONG, "path name is too long"}, #endif /* ENAMETOOLONG */ #ifdef EOVERFLOW - case EOVERFLOW: return "value too large to be stored in data type"; + {EOVERFLOW, "value too large to be stored in data type"}, #endif /* EOVERFLOW */ #ifdef ENOTUNIQ - case ENOTUNIQ: return "given log. name not unique"; + {ENOTUNIQ, "given log. name not unique"}, #endif /* ENOTUNIQ */ #ifdef EBADFD - case EBADFD: return "f.d. invalid for this operation"; + {EBADFD, "f.d. invalid for this operation"}, #endif /* EBADFD */ #ifdef EREMCHG - case EREMCHG: return "Remote address changed"; + {EREMCHG, "Remote address changed"}, #endif /* EREMCHG */ #ifdef ELIBACC - case ELIBACC: return "Can't access a needed shared lib."; + {ELIBACC, "Can't access a needed shared lib."}, #endif /* ELIBACC */ #ifdef ELIBBAD - case ELIBBAD: return "Accessing a corrupted shared lib."; + {ELIBBAD, "Accessing a corrupted shared lib."}, #endif /* ELIBBAD */ #ifdef ELIBSCN - case ELIBSCN: return ".lib section in a.out corrupted."; + {ELIBSCN, ".lib section in a.out corrupted."}, #endif /* ELIBSCN */ #ifdef ELIBMAX - case ELIBMAX: return "Attempting to link in too many libs."; + {ELIBMAX, "Attempting to link in too many libs."}, #endif /* ELIBMAX */ #ifdef ELIBEXEC - case ELIBEXEC: return "Attempting to exec a shared library."; + {ELIBEXEC, "Attempting to exec a shared library."}, #endif /* ELIBEXEC */ #ifdef EILSEQ - case EILSEQ: return "Illegal byte sequence."; + {EILSEQ, "Illegal byte sequence."}, #endif /* EILSEQ */ #ifdef ENOSYS - case ENOSYS: return "Unsupported file system operation"; + {ENOSYS, "Unsupported file system operation"}, #endif /* ENOSYS */ #ifdef ELOOP - case ELOOP: return "Symbolic link loop"; + {ELOOP, "Symbolic link loop"}, #endif /* ELOOP */ #ifdef ERESTART - case ERESTART: return "Restartable system call"; + {ERESTART, "Restartable system call"}, #endif /* ERESTART */ #ifdef ESTRPIPE - case ESTRPIPE: return "if pipe/FIFO, don't sleep in stream head"; + {ESTRPIPE, "if pipe/FIFO, don't sleep in stream head"}, #endif /* ESTRPIPE */ #ifdef ENOTEMPTY - case ENOTEMPTY: return "directory not empty"; + {ENOTEMPTY, "directory not empty"}, #endif /* ENOTEMPTY */ #ifdef EUSERS - case EUSERS: return "Too many users (for UFS)"; + {EUSERS, "Too many users (for UFS)"}, #endif /* EUSERS */ #ifdef ENOTSOCK - case ENOTSOCK: return "Socket operation on non-socket"; + {ENOTSOCK, "Socket operation on non-socket"}, #endif /* ENOTSOCK */ #ifdef EDESTADDRREQ - case EDESTADDRREQ: return "Destination address required"; + {EDESTADDRREQ, "Destination address required"}, #endif /* EDESTADDRREQ */ #ifdef EMSGSIZE - case EMSGSIZE: return "Message too long"; + {EMSGSIZE, "Message too long"}, #endif /* EMSGSIZE */ #ifdef EPROTOTYPE - case EPROTOTYPE: return "Protocol wrong type for socket"; + {EPROTOTYPE, "Protocol wrong type for socket"}, #endif /* EPROTOTYPE */ #ifdef ENOPROTOOPT - case ENOPROTOOPT: return "Protocol not available"; + {ENOPROTOOPT, "Protocol not available"}, #endif /* ENOPROTOOPT */ #ifdef EPROTONOSUPPORT - case EPROTONOSUPPORT: return "Protocol not supported"; + {EPROTONOSUPPORT, "Protocol not supported"}, #endif /* EPROTONOSUPPORT */ #ifdef ESOCKTNOSUPPORT - case ESOCKTNOSUPPORT: return "Socket type not supported"; + {ESOCKTNOSUPPORT, "Socket type not supported"}, #endif /* ESOCKTNOSUPPORT */ #ifdef EOPNOTSUPP - case EOPNOTSUPP: return "Operation not supported on socket"; + {EOPNOTSUPP, "Operation not supported on socket"}, #endif /* EOPNOTSUPP */ #ifdef EPFNOSUPPORT - case EPFNOSUPPORT: return "Protocol family not supported"; + {EPFNOSUPPORT, "Protocol family not supported"}, #endif /* EPFNOSUPPORT */ #ifdef EAFNOSUPPORT - case EAFNOSUPPORT: return "Address family not supported by"; + {EAFNOSUPPORT, "Address family not supported by"}, #endif /* EAFNOSUPPORT */ #ifdef EADDRINUSE - case EADDRINUSE: return "Address already in use"; + {EADDRINUSE, "Address already in use"}, #endif /* EADDRINUSE */ #ifdef EADDRNOTAVAIL - case EADDRNOTAVAIL: return "Can't assign requested address"; + {EADDRNOTAVAIL, "Can't assign requested address"}, #endif /* EADDRNOTAVAIL */ #ifdef ENETDOWN - case ENETDOWN: return "Network is down"; + {ENETDOWN, "Network is down"}, #endif /* ENETDOWN */ #ifdef ENETUNREACH - case ENETUNREACH: return "Network is unreachable"; + {ENETUNREACH, "Network is unreachable"}, #endif /* ENETUNREACH */ #ifdef ENETRESET - case ENETRESET: return "Network dropped connection because"; + {ENETRESET, "Network dropped connection because"}, #endif /* ENETRESET */ #ifdef ECONNABORTED - case ECONNABORTED: return "Software caused connection abort"; + {ECONNABORTED, "Software caused connection abort"}, #endif /* ECONNABORTED */ #ifdef ECONNRESET - case ECONNRESET: return "Connection reset by peer"; + {ECONNRESET, "Connection reset by peer"}, #endif /* ECONNRESET */ #ifdef ENOBUFS - case ENOBUFS: return "No buffer space available"; + {ENOBUFS, "No buffer space available"}, #endif /* ENOBUFS */ #ifdef EISCONN - case EISCONN: return "Socket is already connected"; + {EISCONN, "Socket is already connected"}, #endif /* EISCONN */ #ifdef ENOTCONN - case ENOTCONN: return "Socket is not connected"; + {ENOTCONN, "Socket is not connected"}, #endif /* ENOTCONN */ #ifdef ESHUTDOWN - case ESHUTDOWN: return "Can't send after socket shutdown"; + {ESHUTDOWN, "Can't send after socket shutdown"}, #endif /* ESHUTDOWN */ #ifdef ETOOMANYREFS - case ETOOMANYREFS: return "Too many references: can't splice"; + {ETOOMANYREFS, "Too many references: can't splice"}, #endif /* ETOOMANYREFS */ #ifdef ETIMEDOUT - case ETIMEDOUT: return "Connection timed out"; + {ETIMEDOUT, "Connection timed out"}, #endif /* ETIMEDOUT */ #ifdef ECONNREFUSED - case ECONNREFUSED: return "Connection refused"; + {ECONNREFUSED, "Connection refused"}, #endif /* ECONNREFUSED */ #ifdef EHOSTDOWN - case EHOSTDOWN: return "Host is down"; + {EHOSTDOWN, "Host is down"}, #endif /* EHOSTDOWN */ #ifdef EHOSTUNREACH - case EHOSTUNREACH: return "No route to host"; + {EHOSTUNREACH, "No route to host"}, #endif /* EHOSTUNREACH */ #ifdef EALREADY - case EALREADY: return "operation already in progress"; + {EALREADY, "operation already in progress"}, #endif /* EALREADY */ #ifdef EINPROGRESS - case EINPROGRESS: return "operation now in progress"; + {EINPROGRESS, "operation now in progress"}, #endif /* EINPROGRESS */ #ifdef ESTALE - case ESTALE: return "Stale NFS file handle"; + {ESTALE, "Stale NFS file handle"}, #endif /* ESTALE */ - default: { - static char s[32]; - sprintf(s, "ERROR %d", errnum); - return s; - } - } - /*NOTREACHED*/ + {0, NULL}}; + + for(i = 0; error_list[i].str != NULL; i++) + if(error_list[i].id == errnum) + return error_list[i].str; + sprintf(s, "ERROR %d", errnum); + return s; } #endif /* HAVE_ERRNO_H */ #endif /* HAVE_STRERROR */ @@ -742,3 +755,50 @@ return 0; } #endif /* HAVE_USLEEP */ + + +#ifndef HAVE_STRDUP +char *strdup(const char *s) +{ + size_t len; + char *p; + + len = strlen(s); + if((p = (char *)malloc(len + 1)) == NULL) + return NULL; + p[len] = '\0'; + return p; +} +#endif /* HAVE_STRDUP */ + + +#ifndef HAVE_GETCWD +#ifndef MAXPATHLEN +#define MAXPATHLEN 1024 /* It must be defined in */ +#endif /* MAXPATHLEN */ + +char *getcwd(char *buf, size_t size) +{ + char path[MAXPATHLEN+1]; + if(getwd(path) == NULL) + strcpy(path, "."); + if(buf != NULL) + return strncpy(buf, path, size); + return safe_strdup(path); +} +#endif /* HAVE_GETCWD */ + + +#ifndef HAVE_STRNCASECMP +int strncasecmp(char *s1, char *s2, unsigned int len) { + int dif; + while (len-- > 0) { + if ((dif = + (unsigned char)tolower(*s1) - (unsigned char)tolower(*s2++)) == 0) + return(dif); + if (*s1++ == '\0') + break; + } + return (0); +} +#endif /* HAVE_STRNCASECMP */