Initial revision
This commit is contained in:
parent
718581a522
commit
ce9739ba76
|
@ -0,0 +1,224 @@
|
|||
/* config.h.in. Generated automatically from configure.in by autoheader. */
|
||||
|
||||
/* Define if on Macintosh, compiling with THINK C. */
|
||||
#define THINK_C
|
||||
|
||||
/* Define if on Macintosh, compiling with anyu C compiler. */
|
||||
#define macintosh
|
||||
|
||||
/* Define if on AIX 3.
|
||||
System headers sometimes define this.
|
||||
We just want to avoid a redefinition error message. */
|
||||
#ifndef _ALL_SOURCE
|
||||
#undef _ALL_SOURCE
|
||||
#endif
|
||||
|
||||
/* Define to empty if the keyword does not work. */
|
||||
#undef const
|
||||
|
||||
/* Define if you have dirent.h. */
|
||||
#undef DIRENT
|
||||
|
||||
/* Define to the type of elements in the array set by `getgroups'.
|
||||
Usually this is either `int' or `gid_t'. */
|
||||
#undef GETGROUPS_T
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef gid_t
|
||||
|
||||
/* Define if your struct tm has tm_zone. */
|
||||
#undef HAVE_TM_ZONE
|
||||
|
||||
/* Define if you don't have tm_zone but do have the external array
|
||||
tzname. */
|
||||
#undef HAVE_TZNAME
|
||||
|
||||
/* Define if on MINIX. */
|
||||
#undef _MINIX
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef mode_t
|
||||
|
||||
/* Define if you don't have dirent.h, but have ndir.h. */
|
||||
#undef NDIR
|
||||
|
||||
/* Define to `long' if <sys/types.h> doesn't define. */
|
||||
#undef off_t
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef pid_t
|
||||
|
||||
/* Define if the system does not provide POSIX.1 features except
|
||||
with this defined. */
|
||||
#undef _POSIX_1_SOURCE
|
||||
|
||||
/* Define if you need to in order for stat and other things to work. */
|
||||
#undef _POSIX_SOURCE
|
||||
|
||||
/* Define as the return type of signal handlers (int or void). */
|
||||
#define RETSIGTYPE void
|
||||
|
||||
/* Define to `unsigned' if <sys/types.h> doesn't define. */
|
||||
#undef size_t
|
||||
|
||||
/* Define if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS
|
||||
|
||||
/* Define if you don't have dirent.h, but have sys/dir.h. */
|
||||
#undef SYSDIR
|
||||
|
||||
/* Define if you don't have dirent.h, but have sys/ndir.h. */
|
||||
#undef SYSNDIR
|
||||
|
||||
/* Define if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#undef TIME_WITH_SYS_TIME
|
||||
|
||||
/* Define if your <sys/time.h> declares struct tm. */
|
||||
#undef TM_IN_SYS_TIME
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef uid_t
|
||||
|
||||
/* Define if the closedir function returns void instead of int. */
|
||||
#undef VOID_CLOSEDIR
|
||||
|
||||
/* Define if your <unistd.h> contains bad prototypes for exec*()
|
||||
(as it does on SGI IRIX 4.x) */
|
||||
#undef BAD_EXEC_PROTOTYPES
|
||||
|
||||
/* Define if getpgrp() must be called as getpgrp(0)
|
||||
and (consequently) setpgrp() as setpgrp(0, 0). */
|
||||
#undef GETPGRP_HAVE_ARGS
|
||||
|
||||
/* Define if your compiler supports function prototypes */
|
||||
#define HAVE_PROTOTYPES
|
||||
|
||||
/* Define if you can safely include both <sys/select.h> and <sys/time.h>
|
||||
(which you can't on SCO ODT 3.0). */
|
||||
#undef SYS_SELECT_WITH_SYS_TIME
|
||||
|
||||
/* Define if you want to compile in rudimentary thread support */
|
||||
#undef WITH_THREAD
|
||||
|
||||
/* Define if you want to use the GNU readline library */
|
||||
#undef WITH_READLINE
|
||||
|
||||
/* Define if you have clock. */
|
||||
#define HAVE_CLOCK 1
|
||||
|
||||
/* Define if you have ftime. */
|
||||
#undef HAVE_FTIME
|
||||
|
||||
/* Define if you have getpeername. */
|
||||
#undef HAVE_GETPEERNAME
|
||||
|
||||
/* Define if you have getpgrp. */
|
||||
#undef HAVE_GETPGRP
|
||||
|
||||
/* Define if you have gettimeofday. */
|
||||
#undef HAVE_GETTIMEOFDAY
|
||||
|
||||
/* Define if you have getwd. */
|
||||
#define HAVE_GETWD 1
|
||||
|
||||
/* Define if you have lstat. */
|
||||
#undef HAVE_LSTAT
|
||||
|
||||
/* Define if you have readline. */
|
||||
#undef HAVE_READLINE
|
||||
|
||||
/* Define if you have readlink. */
|
||||
#undef HAVE_READLINK
|
||||
|
||||
/* Define if you have select. */
|
||||
#undef HAVE_SELECT
|
||||
|
||||
/* Define if you have setpgid. */
|
||||
#undef HAVE_SETPGID
|
||||
|
||||
/* Define if you have setpgrp. */
|
||||
#undef HAVE_SETPGRP
|
||||
|
||||
/* Define if you have setsid. */
|
||||
#undef HAVE_SETSID
|
||||
|
||||
/* Define if you have siginterrupt. */
|
||||
#undef HAVE_SIGINTERRUPT
|
||||
|
||||
/* Define if you have symlink. */
|
||||
#undef HAVE_SYMLINK
|
||||
|
||||
/* Define if you have tcgetpgrp. */
|
||||
#undef HAVE_TCGETPGRP
|
||||
|
||||
/* Define if you have tcsetpgrp. */
|
||||
#undef HAVE_TCSETPGRP
|
||||
|
||||
/* Define if you have times. */
|
||||
#undef HAVE_TIMES
|
||||
|
||||
/* Define if you have uname. */
|
||||
#undef HAVE_UNAME
|
||||
|
||||
/* Define if you have waitpid. */
|
||||
#undef HAVE_WAITPID
|
||||
|
||||
/* Define if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define if you have the <signal.h> header file. */
|
||||
#define HAVE_SIGNAL_H 1
|
||||
|
||||
/* Define if you have the <stdarg.h> header file. */
|
||||
#define HAVE_STDARG_H 1
|
||||
|
||||
/* Define if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define if you have the <sys/audioio.h> header file. */
|
||||
#undef HAVE_SYS_AUDIOIO_H
|
||||
|
||||
/* Define if you have the <sys/param.h> header file. */
|
||||
#undef HAVE_SYS_PARAM_H
|
||||
|
||||
/* Define if you have the <sys/select.h> header file. */
|
||||
#undef HAVE_SYS_SELECT_H
|
||||
|
||||
/* Define if you have the <sys/times.h> header file. */
|
||||
#undef HAVE_SYS_TIMES_H
|
||||
|
||||
/* Define if you have the <sys/un.h> header file. */
|
||||
#undef HAVE_SYS_UN_H
|
||||
|
||||
/* Define if you have the <sys/utsname.h> header file. */
|
||||
#undef HAVE_SYS_UTSNAME_H
|
||||
|
||||
/* Define if you have the <thread.h> header file. */
|
||||
#undef HAVE_THREAD_H
|
||||
|
||||
/* Define if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define if you have the <utime.h> header file. */
|
||||
#undef HAVE_UTIME_H
|
||||
|
||||
/* Define if you have the dl library (-ldl). */
|
||||
#undef HAVE_LIBDL
|
||||
|
||||
/* Define if you have the mpc library (-lmpc). */
|
||||
#undef HAVE_LIBMPC
|
||||
|
||||
/* Define if you have the nsl library (-lnsl). */
|
||||
#undef HAVE_LIBNSL
|
||||
|
||||
/* Define if you have the seq library (-lseq). */
|
||||
#undef HAVE_LIBSEQ
|
||||
|
||||
/* Define if you have the socket library (-lsocket). */
|
||||
#undef HAVE_LIBSOCKET
|
||||
|
||||
/* Define if you have the sun library (-lsun). */
|
||||
#undef HAVE_LIBSUN
|
||||
|
||||
/* Define if you have the thread library (-lthread). */
|
||||
#undef HAVE_LIBTHREAD
|
|
@ -0,0 +1,210 @@
|
|||
/***********************************************************
|
||||
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
|
||||
Amsterdam, The Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
provided that the above copyright notice appear in all copies and that
|
||||
both that copyright notice and this permission notice appear in
|
||||
supporting documentation, and that the names of Stichting Mathematisch
|
||||
Centrum or CWI not be used in advertising or publicity pertaining to
|
||||
distribution of the software without specific, written prior permission.
|
||||
|
||||
STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
|
||||
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
|
||||
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
******************************************************************/
|
||||
|
||||
/* Universal Python configuration file */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "myproto.h"
|
||||
#include "mymalloc.h"
|
||||
#include "osdefs.h"
|
||||
#include "intrcheck.h"
|
||||
|
||||
|
||||
#ifndef NO_MAIN
|
||||
|
||||
/* Normally, the main program is called from here (so everything else
|
||||
can be in libPython.a). We save a pointer to argv[0] because it
|
||||
may be needed for dynamic loading of modules in import.c. If you
|
||||
have your own main program and want to use non-SunOS dynamic
|
||||
loading, you will have to provide your own version of
|
||||
getprogramname(). */
|
||||
|
||||
static char *argv0;
|
||||
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
#ifdef macintosh
|
||||
wargs(&argc, &argv);
|
||||
#endif
|
||||
argv0 = argv[0];
|
||||
realmain(argc, argv);
|
||||
}
|
||||
|
||||
char *
|
||||
getprogramname()
|
||||
{
|
||||
return argv0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* Return the initial python search path. This is called once from
|
||||
initsys() to initialize sys.path.
|
||||
The environment variable PYTHONPATH is fetched and the default path
|
||||
appended. (The Mac has no environment variables, so there the
|
||||
default path is always returned.) The default path may be passed
|
||||
to the preprocessor; if not, a system-dependent default is used. */
|
||||
|
||||
#ifndef PYTHONPATH
|
||||
#ifdef macintosh
|
||||
#define PYTHONPATH ": :Lib :Lib:stdwin :Demo"
|
||||
#endif /* macintosh */
|
||||
#endif /* !PYTHONPATH */
|
||||
|
||||
#ifndef PYTHONPATH
|
||||
#ifdef MSDOS
|
||||
#define PYTHONPATH ".;..\\lib;\\python\\lib"
|
||||
#endif /* MSDOS */
|
||||
#endif /* !PYTHONPATH */
|
||||
|
||||
#ifndef PYTHONPATH
|
||||
#define PYTHONPATH ".:/usr/local/lib/python"
|
||||
#endif /* !PYTHONPATH */
|
||||
|
||||
extern char *getenv();
|
||||
|
||||
char *
|
||||
getpythonpath()
|
||||
{
|
||||
#ifdef macintosh
|
||||
return PYTHONPATH;
|
||||
#else /* !macintosh */
|
||||
char *path = getenv("PYTHONPATH");
|
||||
char *defpath = PYTHONPATH;
|
||||
char *buf;
|
||||
char *p;
|
||||
int n;
|
||||
|
||||
if (path == 0 || *path == '\0')
|
||||
return defpath;
|
||||
n = strlen(path) + strlen(defpath) + 2;
|
||||
buf = malloc(n);
|
||||
if (buf == NULL)
|
||||
return path; /* XXX too bad -- but not likely */
|
||||
strcpy(buf, path);
|
||||
p = buf + strlen(buf);
|
||||
*p++ = DELIM;
|
||||
strcpy(p, defpath);
|
||||
return buf;
|
||||
#endif /* !macintosh */
|
||||
}
|
||||
|
||||
|
||||
/* Table of built-in modules.
|
||||
These are initialized when first imported.
|
||||
Note: selection of optional extensions is now generally done by the
|
||||
makesetup script. */
|
||||
|
||||
extern void initarray();
|
||||
extern void initmath();
|
||||
extern void initparser();
|
||||
extern void initmac();
|
||||
extern void initregex();
|
||||
extern void initstrop();
|
||||
extern void initstruct();
|
||||
extern void inittime();
|
||||
extern void initdbm();
|
||||
extern void initfcntl();
|
||||
extern void initnis();
|
||||
extern void initpwd();
|
||||
extern void initgrp();
|
||||
extern void initselect();
|
||||
extern void initsocket();
|
||||
extern void initaudioop();
|
||||
extern void initimageop();
|
||||
extern void initrgbimg();
|
||||
extern void initstdwin();
|
||||
extern void initmd5();
|
||||
extern void initmpz();
|
||||
extern void initrotor();
|
||||
extern void inital();
|
||||
extern void initcd();
|
||||
extern void initcl();
|
||||
extern void initfm();
|
||||
extern void initgl();
|
||||
extern void initimgfile();
|
||||
extern void initsgi();
|
||||
extern void initsv();
|
||||
extern void initfl();
|
||||
extern void initthread();
|
||||
extern void inittiming();
|
||||
|
||||
/* -- ADDMODULE MARKER 1 -- */
|
||||
|
||||
extern void initmarshal();
|
||||
|
||||
struct {
|
||||
char *name;
|
||||
void (*initfunc)();
|
||||
} inittab[] = {
|
||||
|
||||
{"array", initarray},
|
||||
{"math", initmath},
|
||||
{"parser", initparser},
|
||||
{"mac", initmac},
|
||||
{"regex", initregex},
|
||||
{"strop", initstrop},
|
||||
{"struct", initstruct},
|
||||
{"time", inittime},
|
||||
{"audioop", initaudioop},
|
||||
{"imageop", initimageop},
|
||||
{"rgbimg", initrgbimg},
|
||||
{"stdwin", initstdwin},
|
||||
{"md5", initmd5},
|
||||
{"rotor", initrotor},
|
||||
|
||||
/* -- ADDMODULE MARKER 2 -- */
|
||||
|
||||
/* This module "lives in" with marshal.c */
|
||||
{"marshal", initmarshal},
|
||||
|
||||
/* These entries are here for sys.builtin_module_names */
|
||||
{"__main__", NULL},
|
||||
{"__builtin__", NULL},
|
||||
{"sys", NULL},
|
||||
|
||||
/* Sentinel */
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
#ifdef USE_FROZEN
|
||||
#include "frozen.c"
|
||||
#else
|
||||
struct frozen {
|
||||
char *name;
|
||||
char *code;
|
||||
int size;
|
||||
} frozen_modules[] = {
|
||||
{0, 0, 0}
|
||||
};
|
||||
#endif
|
|
@ -0,0 +1,246 @@
|
|||
/***********************************************************
|
||||
Copyright 1991, 1992, 1993, 1004 by Stichting Mathematisch Centrum,
|
||||
Amsterdam, The Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
provided that the above copyright notice appear in all copies and that
|
||||
both that copyright notice and this permission notice appear in
|
||||
supporting documentation, and that the names of Stichting Mathematisch
|
||||
Centrum or CWI not be used in advertising or publicity pertaining to
|
||||
distribution of the software without specific, written prior permission.
|
||||
|
||||
STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
|
||||
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
|
||||
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
******************************************************************/
|
||||
|
||||
/* Macintosh OS module implementation */
|
||||
|
||||
#include "allobjects.h"
|
||||
|
||||
#include "import.h"
|
||||
#include "modsupport.h"
|
||||
|
||||
#include "::unixemu:dir.h"
|
||||
#include "::unixemu:stat.h"
|
||||
|
||||
static object *MacError; /* Exception */
|
||||
|
||||
|
||||
static object *
|
||||
mac_chdir(self, args)
|
||||
object *self;
|
||||
object *args;
|
||||
{
|
||||
char *path;
|
||||
if (!getstrarg(args, &path))
|
||||
return NULL;
|
||||
if (chdir(path) != 0)
|
||||
return err_errno(MacError);
|
||||
INCREF(None);
|
||||
return None;
|
||||
}
|
||||
|
||||
|
||||
static object *
|
||||
mac_getcwd(self, args)
|
||||
object *self;
|
||||
object *args;
|
||||
{
|
||||
extern char *getwd();
|
||||
char buf[1025];
|
||||
if (!getnoarg(args))
|
||||
return NULL;
|
||||
strcpy(buf, "mac.getcwd() failed"); /* In case getwd() doesn't set a msg */
|
||||
if (getwd(buf) == NULL) {
|
||||
err_setstr(MacError, buf);
|
||||
return NULL;
|
||||
}
|
||||
return newstringobject(buf);
|
||||
}
|
||||
|
||||
|
||||
static object *
|
||||
mac_listdir(self, args)
|
||||
object *self;
|
||||
object *args;
|
||||
{
|
||||
object *d, *v;
|
||||
char *name;
|
||||
DIR *dirp;
|
||||
struct direct *ep;
|
||||
if (!getstrarg(args, &name))
|
||||
return NULL;
|
||||
if ((dirp = opendir(name)) == NULL)
|
||||
return err_errno(MacError);
|
||||
if ((d = newlistobject(0)) == NULL) {
|
||||
closedir(dirp);
|
||||
return NULL;
|
||||
}
|
||||
while ((ep = readdir(dirp)) != NULL) {
|
||||
v = newstringobject(ep->d_name);
|
||||
if (v == NULL) {
|
||||
DECREF(d);
|
||||
d = NULL;
|
||||
break;
|
||||
}
|
||||
if (addlistitem(d, v) != 0) {
|
||||
DECREF(v);
|
||||
DECREF(d);
|
||||
d = NULL;
|
||||
break;
|
||||
}
|
||||
DECREF(v);
|
||||
}
|
||||
closedir(dirp);
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
static object *
|
||||
mac_mkdir(self, args)
|
||||
object *self;
|
||||
object *args;
|
||||
{
|
||||
char *path;
|
||||
int mode;
|
||||
if (!getargs(args, "(si)", &path, &mode))
|
||||
return NULL;
|
||||
if (mkdir(path, mode) != 0)
|
||||
return err_errno(MacError);
|
||||
INCREF(None);
|
||||
return None;
|
||||
}
|
||||
|
||||
|
||||
static object *
|
||||
mac_rename(self, args)
|
||||
object *self;
|
||||
object *args;
|
||||
{
|
||||
char *src, *dst;
|
||||
if (!getargs(args, "(ss)", &src, &dst))
|
||||
return NULL;
|
||||
if (rename(src, dst) != 0)
|
||||
return err_errno(MacError);
|
||||
INCREF(None);
|
||||
return None;
|
||||
}
|
||||
|
||||
|
||||
static object *
|
||||
mac_rmdir(self, args)
|
||||
object *self;
|
||||
object *args;
|
||||
{
|
||||
char *path;
|
||||
if (!getstrarg(args, &path))
|
||||
return NULL;
|
||||
if (rmdir(path) != 0)
|
||||
return err_errno(MacError);
|
||||
INCREF(None);
|
||||
return None;
|
||||
}
|
||||
|
||||
|
||||
static object *
|
||||
mac_stat(self, args)
|
||||
object *self;
|
||||
object *args;
|
||||
{
|
||||
struct stat st;
|
||||
char *path;
|
||||
object *v;
|
||||
if (!getstrarg(args, &path))
|
||||
return NULL;
|
||||
if (stat(path, &st) != 0)
|
||||
return err_errno(MacError);
|
||||
v = newtupleobject(11);
|
||||
if (v == NULL)
|
||||
return NULL;
|
||||
#define SET(i, val) settupleitem(v, i, newintobject((long)(val)))
|
||||
#define UNSET(i, val) SET(i, 0) /* For values my Mac stat doesn't support */
|
||||
SET(0, st.st_mode);
|
||||
UNSET(1, st.st_ino);
|
||||
UNSET(2, st.st_dev);
|
||||
UNSET(3, st.st_nlink);
|
||||
UNSET(4, st.st_uid);
|
||||
UNSET(5, st.st_gid);
|
||||
SET(6, st.st_size);
|
||||
UNSET(7, st.st_atime);
|
||||
SET(8, st.st_mtime);
|
||||
UNSET(9, st.st_ctime);
|
||||
SET(10, st.st_rsize); /* Mac-specific: resource size */
|
||||
/* XXX Check that unixemu:stat.c defines this! */
|
||||
#undef SET
|
||||
if (err_occurred()) {
|
||||
DECREF(v);
|
||||
return NULL;
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
static object *
|
||||
mac_sync(self, args)
|
||||
object *self;
|
||||
object *args;
|
||||
{
|
||||
if (!getnoarg(args))
|
||||
return NULL;
|
||||
sync();
|
||||
INCREF(None);
|
||||
return None;
|
||||
}
|
||||
|
||||
|
||||
static object *
|
||||
mac_unlink(self, args)
|
||||
object *self;
|
||||
object *args;
|
||||
{
|
||||
char *path;
|
||||
if (!getstrarg(args, &path))
|
||||
return NULL;
|
||||
if (unlink(path) != 0)
|
||||
return err_errno(MacError);
|
||||
INCREF(None);
|
||||
return None;
|
||||
}
|
||||
|
||||
|
||||
static struct methodlist mac_methods[] = {
|
||||
{"chdir", mac_chdir},
|
||||
{"getcwd", mac_getcwd},
|
||||
{"listdir", mac_listdir},
|
||||
{"mkdir", mac_mkdir},
|
||||
{"rename", mac_rename},
|
||||
{"rmdir", mac_rmdir},
|
||||
{"stat", mac_stat},
|
||||
{"sync", mac_sync},
|
||||
{"unlink", mac_unlink},
|
||||
{NULL, NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
void
|
||||
initmac()
|
||||
{
|
||||
object *m, *d;
|
||||
|
||||
m = initmodule("mac", mac_methods);
|
||||
d = getmoduledict(m);
|
||||
|
||||
/* Initialize mac.error exception */
|
||||
MacError = newstringobject("mac.error");
|
||||
if (MacError == NULL || dictinsert(d, "error", MacError) != 0)
|
||||
fatal("can't define mac.error");
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
#include "::unixemu:stat.h"
|
||||
|
||||
/* Interfaced used by import.c */
|
||||
|
||||
long
|
||||
getmtime(path)
|
||||
char *path;
|
||||
{
|
||||
struct stat st;
|
||||
if (stat(path, &st) != 0)
|
||||
return -1L;
|
||||
return st.st_mtime;
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
#include <MacHeaders>
|
||||
#include <string.h>
|
||||
|
||||
/* Interface used by tokenizer.c */
|
||||
|
||||
guesstabsize(path)
|
||||
char *path;
|
||||
{
|
||||
char s[256];
|
||||
int refnum;
|
||||
Handle h;
|
||||
int tabsize = 0;
|
||||
s[0] = strlen(path);
|
||||
strncpy(s+1, path, s[0]);
|
||||
refnum = OpenResFile(s);
|
||||
/* printf("%s --> refnum=%d\n", path, refnum); */
|
||||
if (refnum == -1)
|
||||
return 0;
|
||||
UseResFile(refnum);
|
||||
h = GetIndResource('ETAB', 1);
|
||||
if (h != 0) {
|
||||
tabsize = (*(short**)h)[1];
|
||||
/* printf("tabsize=%d\n", tabsize); */
|
||||
}
|
||||
CloseResFile(refnum);
|
||||
return tabsize;
|
||||
}
|
Loading…
Reference in New Issue