Hello,
here's the announced patch for dtksh. It allows building on many
more platforms.
The patch has been tested on:
- FreeBSD 9.0 i386 + amd64
- FreeBSD >= 9.1 i386 + amd64
- OpenBSD 5.1 i386
- Xubuntu 12.04 i386 + amd64
- Debian Squeeze 6.0 i386 *)
- Fedora 17 i386
On other linux distributions it may also work.
*) The ksh of Debian Squeeze (ksh93s) seems to be broken. Dtksh cannot
be build with this version. I installed the ksh package from Debian
Wheezy (ksh93u) and then it's ok.
--
Ulrich Wilkens
Email: m...@uwilkens.de
>From 3aadeb5bbc5547ea0bd1be2565724e9b455b9a47 Mon Sep 17 00:00:00 2001
From: Ulrich Wilkens <m...@uwilkens.de>
Date: Tue, 26 Mar 2013 04:08:13 +0100
Subject: [PATCH] Build dtksh on more OSs
---
cde/programs/Imakefile | 2 +-
cde/programs/dtksh/Imakefile | 9 ++++-----
cde/programs/dtksh/ksh93/Imakefile | 2 +-
cde/programs/dtksh/ksh93/ship/shipiffe.sh | 2 +-
.../dtksh/ksh93/src/lib/libast/comp/conf.tab | 4 ++++
cde/programs/dtksh/ksh93/src/lib/libast/conf.tab | 4 ++++
.../dtksh/ksh93/src/lib/libast/features/lib | 4 ++--
.../dtksh/ksh93/src/lib/libast/features/tty | 2 ++
.../dtksh/ksh93/src/lib/libast/include/ast.h | 8 ++++++++
.../dtksh/ksh93/src/lib/libast/include/ast_std.h | 2 ++
.../dtksh/ksh93/src/lib/libast/include/sfio.h | 2 ++
.../dtksh/ksh93/src/lib/libast/sfio/sfvprintf.c | 2 +-
.../dtksh/ksh93/src/lib/libcmd/features/symlink | 9 ++++++++-
13 files changed, 40 insertions(+), 12 deletions(-)
diff --git a/cde/programs/Imakefile b/cde/programs/Imakefile
index f628ce3..b04800f 100644
--- a/cde/programs/Imakefile
+++ b/cde/programs/Imakefile
@@ -10,7 +10,7 @@ EXTRADIRS = types localized tttypes $(NSGMLSDIR) util
XCOMM some of these cannot be built on linux yet.
XCOMM dtksh dtinfo
#if defined(LinuxArchitecture)
-DTKSHDIR =
+DTKSHDIR = dtksh
DTINFODIR =
DTCMDIR = dtcm
DTLOGINDIR = dtlogin
diff --git a/cde/programs/dtksh/Imakefile b/cde/programs/dtksh/Imakefile
index f5071a3..b20ae7a 100644
--- a/cde/programs/dtksh/Imakefile
+++ b/cde/programs/dtksh/Imakefile
@@ -61,16 +61,15 @@ EXTRA_INCLUDES = -I$(DTHELPSRC) -I$(DTPRINTSRC)
.NO_PARALLEL:
#endif
+#ifdef LinuxArchitecture
+SYS_LIBRARIES = -lm -ldl
+#endif
+
#define IHaveSubdirs
#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'
-#if defined(LinuxArchitecture)
-SUBDIRS = examples
-KSH93OBJ =
-#else
SUBDIRS = examples ksh93
KSH93OBJ = $(KSH93SRC)/ksh93.o
-#endif
MakeSubdirs($(SUBDIRS))
diff --git a/cde/programs/dtksh/ksh93/Imakefile
b/cde/programs/dtksh/ksh93/Imakefile
index 9e10032..3677918 100644
--- a/cde/programs/dtksh/ksh93/Imakefile
+++ b/cde/programs/dtksh/ksh93/Imakefile
@@ -56,7 +56,7 @@ ALL_SUBS = *
ksh93src:
$(RM) $(SHIP_DIR)/$(ALL_SUBS)/$(ALL_SUBS)/BUILT; \
- SHELL=$(KORNSHELL) CC=$(CC) CCFLAGS="$(CCFLAGS)" $(KORNSHELL)
ship/shipin $(FORCE_SHIP)
+ SHELL=$(KORNSHELL) CC="$(CC)" CCFLAGS="$(CCFLAGS)" $(KORNSHELL)
ship/shipin $(FORCE_SHIP)
ksh93.o: $(OBJS)
$(LD) -r -o $@ $(OBJS)
diff --git a/cde/programs/dtksh/ksh93/ship/shipiffe.sh
b/cde/programs/dtksh/ksh93/ship/shipiffe.sh
index 41a10a6..a443980 100644
--- a/cde/programs/dtksh/ksh93/ship/shipiffe.sh
+++ b/cde/programs/dtksh/ksh93/ship/shipiffe.sh
@@ -1103,7 +1103,7 @@ $inc
*) e='-e
/[\\\\/]sys[\\\\/]'$x'\.h"/d' ;;
esac
if $cc -E $tmp.c <&$nullin >$tmp.i
- then i=`sed -e '/^#[line
]*[0-9][0-9]*[ ][ ]*"[\\\\/].*[\\\\/]'$x'\.h"/!d' $e -e
s'/.*"\(.*\)".*/\1/' -e 's,\\\\,/,g' -e 's,///*,/,g' $tmp.i | sort -u`
+ then i=`sed -e '/^#[line
]*[0-9][0-9]*[ ][ ]*"[\\\\/].*[\\\\/]'$x'\.h"/!d' $e -e '/\/bits\//d' -e
s'/.*"\(.*\)".*/\1/' -e 's,\\\\,/,g' -e 's,///*,/,g' $tmp.i | sort -u`
for i in $i
do break
done
diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/comp/conf.tab
b/cde/programs/dtksh/ksh93/src/lib/libast/comp/conf.tab
index b63580f..90f87ad 100644
--- a/cde/programs/dtksh/ksh93/src/lib/libast/comp/conf.tab
+++ b/cde/programs/dtksh/ksh93/src/lib/libast/comp/conf.tab
@@ -235,7 +235,11 @@ OPEN_MAX_CEIL 50 AST XX 1 L
OPEN_MAX
OS_VERSION 119 AES SC 1 FSU
PAGESIZE 51 POSIX SC 1 L PAGE_SIZE 4096
#if _lib_getpagesize
+ #if defined(linux)
+ extern int getpagesize(void);
+ #else
extern ssize_t getpagesize(void);
+ #endif
#define _LOCAL_PAGESIZE getpagesize()
#endif
PAGE_SIZE 101 XOPEN SC 1 L PAGESIZE
diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/conf.tab
b/cde/programs/dtksh/ksh93/src/lib/libast/conf.tab
index 394908e..e3edc0d 100644
--- a/cde/programs/dtksh/ksh93/src/lib/libast/conf.tab
+++ b/cde/programs/dtksh/ksh93/src/lib/libast/conf.tab
@@ -239,7 +239,11 @@ OPEN_MAX_CEIL 50 AST XX 1 L
OPEN_MAX
OS_VERSION 119 AES SC 1 FSU
PAGESIZE 51 POSIX SC 1 L PAGE_SIZE 4096
#if _lib_getpagesize
+ #if defined(linux)
+ extern int getpagesize(void);
+ #else
extern ssize_t getpagesize(void);
+ #endif
#define _LOCAL_PAGESIZE getpagesize()
#endif
PAGE_SIZE 101 XOPEN SC 1 L PAGESIZE
diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/features/lib
b/cde/programs/dtksh/ksh93/src/lib/libast/features/lib
index 3c5d508..bbe2725 100644
--- a/cde/programs/dtksh/ksh93/src/lib/libast/features/lib
+++ b/cde/programs/dtksh/ksh93/src/lib/libast/features/lib
@@ -5,10 +5,10 @@ lib
_cleanup,BSDsetpgrp,atexit,bcopy,bzero,confstr,dirread,dup2,fchmod
lib fcntl,fnmatch,fork,fsync,getconf,getdents,getdirentries,getdtablesize
lib getgroups,getpagesize,getrlimit,getuniverse,index,killpg,link
lib localeconv,lstat,mbtowc,memccpy
-lib memchr,memcmp,memcpy,memdup,memmove,memset,mkdir,mkfifo,mknod,mktemp
+lib memchr,memcmp,memcpy,memmove,memset,mkdir,mkfifo,mknod,mktemp
lib mount,on_exit,onexit,opendir,pathconf,readlink,remove,rename,rindex
lib rmdir,rewinddir,setlocale,setpgid,setpgrp,setpgrp2,setreuid,setsid
-lib setuid,sigaction,sigprocmask,sigsetmask,sigunblock,sigvec
+lib setuid,sigaction,sigprocmask,sigsetmask,sigvec
lib socketpair,spawnve,spawnveg,strchr,strcoll,strdup,strerror,strrchr
lib strtod,strtol,strtoul,strxfrm,symlink,sysconf
lib telldir,tmpnam,tzset,universe,unlink,utime,vfork
diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/features/tty
b/cde/programs/dtksh/ksh93/src/lib/libast/features/tty
index fa55870..9a75fc8 100644
--- a/cde/programs/dtksh/ksh93/src/lib/libast/features/tty
+++ b/cde/programs/dtksh/ksh93/src/lib/libast/features/tty
@@ -16,5 +16,7 @@ cat{
#else
#undef ioctl
#endif
+ #if !defined(linux)
extern int ioctl(int, int, ...);
+ #endif
}end
diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/include/ast.h
b/cde/programs/dtksh/ksh93/src/lib/libast/include/ast.h
index 11bad2b..ffe0b39 100644
--- a/cde/programs/dtksh/ksh93/src/lib/libast/include/ast.h
+++ b/cde/programs/dtksh/ksh93/src/lib/libast/include/ast.h
@@ -121,9 +121,17 @@
* workaround botched headers that assume <stdio.h>
*/
+#if defined(linux)
+#ifndef __FILE
+#define __FILE FILE
+#endif
+#endif
+
+#if !defined(CSRG_BASED)
#ifndef FILE
#define FILE Sfio_t
#endif
+#endif
/*
* exit() support -- this matches shell exit codes
diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/include/ast_std.h
b/cde/programs/dtksh/ksh93/src/lib/libast/include/ast_std.h
index e11431c..0835df5 100644
--- a/cde/programs/dtksh/ksh93/src/lib/libast/include/ast_std.h
+++ b/cde/programs/dtksh/ksh93/src/lib/libast/include/ast_std.h
@@ -137,7 +137,9 @@
#define _SKIP_SFSTDIO_H
#else
#define _SFSTDIO_H
+#if !defined(linux)
#define FILE int
+#endif
#if defined(__STDPP__directive) && defined(__STDPP__hide)
#if !_std_def_calloc
__STDPP__directive pragma pp:hide calloc
diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/include/sfio.h
b/cde/programs/dtksh/ksh93/src/lib/libast/include/sfio.h
index e51c073..1176f2f 100644
--- a/cde/programs/dtksh/ksh93/src/lib/libast/include/sfio.h
+++ b/cde/programs/dtksh/ksh93/src/lib/libast/include/sfio.h
@@ -149,9 +149,11 @@
#define _STDIO_INCLUDED 1
#endif
+#if !defined(CSRG_BASED)
#ifndef FILE
#define FILE Sfio_t
#endif
+#endif
#endif /* __cplusplus */
typedef struct _sfio_ Sfile_t, Sfio_t, SFIO;
diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvprintf.c
b/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvprintf.c
index 214bb50..7ec0b91 100644
--- a/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvprintf.c
+++ b/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvprintf.c
@@ -301,7 +301,7 @@ loop_fa :
GETARG(form,form,argf,args,char*,char*,'1',t_user,n_user);
if(!form)
form = "";
-#if defined(CSRG_BASED) && !defined(__LP64__)
+#if (defined(CSRG_BASED) && !defined(__LP64__)) || (defined(linux) &&
!defined(__LP64__))
GETARG(argsp,argsp,argf,args,va_list*,va_list*,'2',t_user,n_user);
memcpy((Void_t*)(&(fa->args)), (Void_t*)(&args),
sizeof(va_list));
memcpy((Void_t*)(&args), (Void_t*)argsp,
sizeof(va_list));
diff --git a/cde/programs/dtksh/ksh93/src/lib/libcmd/features/symlink
b/cde/programs/dtksh/ksh93/src/lib/libcmd/features/symlink
index 6d054b8..2c2ceb6 100644
--- a/cde/programs/dtksh/ksh93/src/lib/libcmd/features/symlink
+++ b/cde/programs/dtksh/ksh93/src/lib/libcmd/features/symlink
@@ -1 +1,8 @@
-lib lchmod,lchown
+lib lchown
+tst lib_lchmod note{ lchmod() in default lib(s) }end link{
+ #include <sys/stat.h>
+ main()
+ { lchmod("/tmp/lchmod_test", 0755);
+ return 0;
+ }
+}end
--
1.7.9.5
------------------------------------------------------------------------------
Own the Future-Intel(R) Level Up Game Demo Contest 2013
Rise to greatness in Intel's independent game demo contest. Compete
for recognition, cash, and the chance to get your game on Steam.
$5K grand prize plus 10 genre and skill prizes. Submit your demo
by 6/6/13. http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2
_______________________________________________
cdesktopenv-devel mailing list
cdesktopenv-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cdesktopenv-devel