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

Reply via email to