ftp.nice.ch/pub/next/developer/languages/smalltalk/smalltalk.1.2.alpha5.s.tar.gz#/smalltalk-1.2.alpha5/objc/Notes/unix.c

This is unix.c in view mode; [Download] [Up]


#import "mst.h"
#include <sys/file.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <signal.h>

extern void defineCFunc();

void initUnixCFuncs()
{
    /*
     * File stuff

     FILE *fopen(const char *filename, const char *type);
     FILE *freopen(const char *filename, const char *type, FILE *stream);
     FILE *fdopen(int fildes, char *type);
     size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream);
     size_t fwrite(void *ptr, size_t size, size_t nitems, FILE *stream);
     int fclose(FILE *stream);
     int fflush(FILE *stream);
     */

    defineCFunc("fopen", fopen);
    defineCFunc("freopen", freopen);
    defineCFunc("fdopen", fdopen);
    defineCFunc("fread", fdopen);
    defineCFunc("fwrite", fdopen);
    defineCFunc("fflush", fflush);
    defineCFunc("fclose", fclose);

    /*
     int open(char *path, int flags, int mode);
     int close(int fd);
     int flock(int fd, int operation)
     int read(int fd, char *buf, int nbytes);
     int write(int fd, char *buf, int nbytes);
     int dup(int fd);
     int dup2(int fd, int fd2);
     int pipe(int fildes[2])
     */

    defineCFunc("open", open);
    defineCFunc("close", close);
    defineCFunc("flock", flock);
    defineCFunc("read", read);
    defineCFunc("write", write);
    defineCFunc("dup", dup);
    defineCFunc("dup2", dup2);
    defineCFunc("pipe", pipe);

    /*
     int creat(const char *path, mode_t mode);
     int chmod(const char *path, mode_t mode);
     int chown(const char *path, uid_t owner, gid_t group);
     mode_t umask(mode_t cmask);
     int rename(const char *old, const char *new);
     int link(const char *existing, const char *new);
     int unlink(const char *path);
     */

    defineCFunc("creat", creat);
    defineCFunc("chmod", chmod);
    defineCFunc("chown", chown);
    defineCFunc("umask", chmod);
    defineCFunc("rename", rename);
    defineCFunc("link", link);
    defineCFunc("unlink", unlink);

    /* process stuff 
       pid_t getpid(void);
       pid_t getppid(void);
       int kill(pid_t pid, int sig);
       int killpg(int pgrp, int sig)
       pid_t getpgrp(int pid);
       int setpgrp(int pid, int pgrp)
       int getpriority(int which, int who)
       int setpriority(int which, int who, int prio)
       pid_t fork(void);
       int vfork(void);
       int execl(const char *name, const char *arg0, const char *arg1, ..., 
	   	const char *argn, (char *) 0);
       int execv(const char *path, const char
       int execle(const char *path, const char *arg0, const char *arg1, ..., 
	   	const char *argn, (char *) 0, const char *envp[]);       
       int execlp(const char *file, const char *arg0, const char *arg1, ...,
            const char *argn, (char *) 0);      
       int execvp(const char *file, const char      
     */

    defineCFunc("getpid", getpid);
    defineCFunc("kill", kill);
    defineCFunc("killpg", killpg);
    defineCFunc("getpgrp", getpgrp);
    defineCFunc("setpgrp", setpgrp);
    defineCFunc("getppid", getppid);
    defineCFunc("nice", setpriority);
    defineCFunc("setpriority", setpriority);
    defineCFunc("fork", fork);
    defineCFunc("vfork", vfork);
    defineCFunc("execve", execve);
    defineCFunc("execl", execl);
    defineCFunc("execle", execle);
    defineCFunc("execlp", execlp);
    defineCFunc("execvp", execvp);
	
	/* Socket code
	int accept(int, struct sockaddr *, int *);
	int bind(int, struct sockaddr *, int);
	int connect(int, struct sockaddr *, int);
	int getpeername(int, struct sockaddr *, int *);
	int getsockname(int, struct sockaddr *, int *);
	int getsockopt(int, int, int, void *optval, int *);
	int setsockopt(int, int, int, void *optval, int);
	int listen(int, int);
	int recv(int, void *, int, int);
	int recvfrom(int, void *, int, int, struct sockaddr *, int *);
	int recvmsg(int, struct msghdr *, int);
	int send(int, void *, int, int);
	int sendto(int, void *, int, int, struct sockaddr *, int);
	int sendmsg(int, struct msghdr *, int);
	int socket(int, int, int);
	int socketpair(int, int, int, int *);
	*/

    defineCFunc("accept", accept);
    defineCFunc("bind", bind);
    defineCFunc("connect", connect);
    defineCFunc("getpeername", getpeername);
    defineCFunc("getsockname", getsockname);
    defineCFunc("accept", accept);
    defineCFunc("accept", accept);

	/* Code in libc
	
	*/
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.