1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00

Remove Microsoft/Cygwin import/export nonsense

Windows/Cygwin requires onerous special handling and the definition
of additional _imp__* symbols to import/export symbols between
dynamically linked binaries. Its support in AST used a lot of
macros and code obfuscation. In the features/common test for this,
AT&T called this the "Microsoft import/export nonsense".

They're right, it's nonsense. Somehow, Microsoft's POSIX layer,
SFU/Interix, always managed without it. No one has time to maintain
this (especially considering how incredibly sluggish Cygwin is).
And in fact, it had already fallen victim to bit rot; I confirmed
this in my early experiments with reintroducing dynamic library
support. No one has time to fix it, either.

So, my apologies to any Cygwin fans; ksh 93u+m will never support
dynamically loadable built-ins on Cygwin, even when I do manage to
reintroduce dynamic linking properly.
This commit is contained in:
Martijn Dekker 2022-07-21 18:26:42 +02:00
parent 4c0df0e617
commit 3de4da5afb
143 changed files with 125 additions and 1083 deletions

View file

@ -63,10 +63,6 @@
/* entry point for shell special builtins */
#if defined(__EXPORT__)
# define extern __EXPORT__
#endif
extern int b_alias(int, char*[],Shbltin_t*);
extern int b_break(int, char*[],Shbltin_t*);
extern int b_dot_cmd(int, char*[],Shbltin_t*);
@ -129,8 +125,6 @@ extern int b_times(int, char*[],Shbltin_t*);
extern short b_enum_nelem(Namfun_t*);
#undef extern
extern const char e_alrm1[];
extern const char e_alrm2[];
extern const char e_badfun[];

View file

@ -59,9 +59,6 @@ extern int sh_iorenumber(int,int);
extern void sh_pclose(int[]);
extern int sh_rpipe(int[]);
extern void sh_iorestore(int,int);
#if defined(__EXPORT__) && defined(_BLD_DLL)
__EXPORT__
#endif
extern Sfio_t *sh_iostream(int);
extern int sh_redirect(struct ionod*,int);
extern void sh_iosave(int,int,char*);

View file

@ -237,9 +237,6 @@ struct Namval
#define NV_DCADD 0 /* used to add named disciplines */
#define NV_DCRESTRICT 1 /* variable that are restricted in rsh */
#if defined(__EXPORT__) && defined(_DLL)
# define extern __EXPORT__
#endif /* _DLL */
/* prototype for array interface */
extern Namarr_t *nv_arrayptr(Namval_t*);
extern Namarr_t *nv_setarray(Namval_t*,void*(*)(Namval_t*,const char*,int));
@ -289,10 +286,6 @@ extern Namval_t *nv_type(Namval_t*);
extern void nv_addtype(Namval_t*,const char*, Optdisc_t*, size_t);
extern const Namdisc_t *nv_discfun(int);
#ifdef _DLL
# undef extern
#endif /* _DLL */
#define nv_unset(np) _nv_unset(np,0)
#define nv_size(np) nv_setsize((np),-1)
#define nv_stack(np,nf) nv_disc(np,nf,0)

View file

@ -83,12 +83,8 @@ extern char *path_fullname(const char*);
extern int path_expand(const char*, struct argnod**);
extern noreturn void path_exec(const char*,char*[],struct argnod*);
extern pid_t path_spawn(const char*,char*[],char*[],Pathcomp_t*,int);
#if defined(__EXPORT__) && defined(_BLD_DLL)
# define extern __EXPORT__
#endif
extern int path_open(const char*,Pathcomp_t*);
extern Pathcomp_t *path_get(const char*);
#undef extern
extern char *path_pwd(void);
extern Pathcomp_t *path_nextcomp(Pathcomp_t*,const char*,Pathcomp_t*);
extern int path_search(const char*,Pathcomp_t**,int);

View file

@ -419,10 +419,6 @@ extern Libcomp_t *liblist;
#undef getenv /* -lshell provides its own */
#if defined(__EXPORT__) && defined(_DLL)
# define extern __EXPORT__
#endif /* _DLL */
extern void sh_subfork(void);
extern Shell_t *sh_init(int,char*[],Shinit_f);
extern int sh_reinit(char*[]);
@ -472,10 +468,6 @@ extern int sh_exec(const Shnode_t*,int);
extern Shell_t sh;
#define sh_getinterp() (&sh)
#ifdef _DLL
# undef extern
#endif /* _DLL */
#define chdir(a) sh_chdir(a)
#define fchdir(a) sh_fchdir(a)
#ifndef defs_h_defined

View file

@ -212,9 +212,6 @@ union Shnode_u
extern void sh_freeup(void);
extern void sh_funstaks(struct slnod*,int);
extern Sfio_t *sh_subshell(Shnode_t*, volatile int, int);
#if defined(__EXPORT__) && defined(_BLD_DLL)
__EXPORT__
#endif
extern int sh_tdump(Sfio_t*, const Shnode_t*);
extern Shnode_t *sh_trestore(Sfio_t*);

View file

@ -32,9 +32,6 @@
#include "timeout.h"
Shell_t sh = {0};
#ifdef __IMPORT__
Shell_t *_imp__sh = &sh;
#endif
Dtdisc_t _Nvdisc =
{

View file

@ -135,10 +135,6 @@ void fcnotify(void (*fun)(Sfio_t*,const char*,int,void*),void* context)
_Fcin.context = context;
}
#ifdef __EXPORT__
# define extern __EXPORT__
#endif
#undef fcsave
extern void fcsave(Fcin_t *fp)
{

View file

@ -969,10 +969,6 @@ Sfdouble_t arith_strval(const char *s, char **end, Sfdouble_t(*convert)(const ch
#undef error
#if defined(__EXPORT__)
#define extern __EXPORT__
#endif
#ifndef DOMAIN
#define DOMAIN _DOMAIN
#endif
@ -1010,6 +1006,4 @@ Sfdouble_t arith_strval(const char *s, char **end, Sfdouble_t(*convert)(const ch
UNREACHABLE();
}
#undef extern
#endif /* _mem_name_exception */