I can't find Stevens ourhdr.h

31 views
Skip to first unread message

Peter Percival

unread,
Jul 5, 2018, 9:50:39 AM7/5/18
to
W. Richard Stevens' /Advanced programming in the Unix environment/
features a file ourhdr.h. I have downloaded the source code for the
book from http://www.kohala.com/start/apue.tar.Z. There are a number of
files called ourhdr.h but they all seem to be empty.

I downloaded and expanded apue.tar.Z on a Windows 10 computer using
WinZip with a view to transferring them, via a USB stick, to a Raspberry Pi.

Peter Percival

unread,
Jul 5, 2018, 1:44:46 PM7/5/18
to
😉 Good Guy 😉 wrote:
> Put this code in the empty file or files:

Thank you.
>
>> /* Our own header, to be included *after* all standard system headers */
>>
>> #ifndef    __ourhdr_h
>> #define    __ourhdr_h
>>
>> #include    <sys/types.h>    /* required for some of our prototypes */
>> #include    <stdio.h>        /* for convenience */
>> #include    <stdlib.h>        /* for convenience */
>> #include    <string.h>        /* for convenience */
>> #include    <unistd.h>        /* for convenience */
>>
>> #ifdef    notdef    /* delete for systems that don't define this
>> (SunOS 4.x) */
>> typedef    int    ssize_t;
>> #endif
>>
>> #ifdef    notdef    /* delete if <stdlib.h> doesn't define these for
>> getopt() */
>> extern char    *optarg;
>> extern int    optind, opterr, optopt;
>> #endif
>>
>> #ifdef    notdef    /* delete if send() not supported (DEC OSF/1) */
>> #define    send(a,b,c,d)    sendto((a), (b), (c), (d), (struct
>> sockaddr *) NULL, 0)
>> #endif
>>
>> #define    MAXLINE    4096            /* max line length */
>>
>> #define    FILE_MODE    (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
>>                     /* default file access permissions for new files */
>> #define    DIR_MODE    (FILE_MODE | S_IXUSR | S_IXGRP | S_IXOTH)
>>                     /* default permissions for new directories */
>>
>> typedef    void    Sigfunc(int);    /* for signal handlers */
>>
>>                     /* 4.3BSD Reno <signal.h> doesn't define SIG_ERR */
>> #if    defined(SIG_IGN) && !defined(SIG_ERR)
>> #define    SIG_ERR    ((Sigfunc *)-1)
>> #endif
>>
>> #define    min(a,b)    ((a) < (b) ? (a) : (b))
>> #define    max(a,b)    ((a) > (b) ? (a) : (b))
>>
>>                     /* prototypes for our own functions */
>> char    *path_alloc(int *);            /* {Prog pathalloc} */
>> int         open_max(void);            /* {Prog openmax} */
>> void     clr_fl(int, int);            /* {Prog setfl} */
>> void     set_fl(int, int);            /* {Prog setfl} */
>> void     pr_exit(int);                /* {Prog prexit} */
>> void     pr_mask(const char *);        /* {Prog prmask} */
>> Sigfunc    *signal_intr(int, Sigfunc *);/* {Prog signal_intr_function} */
>>
>> int         tty_cbreak(int);            /* {Prog raw} */
>> int         tty_raw(int);                /* {Prog raw} */
>> int         tty_reset(int);            /* {Prog raw} */
>> void     tty_atexit(void);            /* {Prog raw} */
>> #ifdef    ECHO    /* only if <termios.h> has been included */
>> struct termios    *tty_termios(void);    /* {Prog raw} */
>> #endif
>>
>> void     sleep_us(unsigned int);    /* {Ex sleepus} */
>> ssize_t     readn(int, void *, size_t);/* {Prog readn} */
>> ssize_t     writen(int, const void *, size_t);/* {Prog writen} */
>> int         daemon_init(void);            /* {Prog daemoninit} */
>>
>> int         s_pipe(int *);                /* {Progs svr4_spipe
>> bsd_spipe} */
>> int         recv_fd(int, ssize_t (*func)(int, const void *, size_t));
>>                                     /* {Progs recvfd_svr4 recvfd_43bsd} */
>> int         send_fd(int, int);            /* {Progs sendfd_svr4
>> sendfd_43bsd} */
>> int         send_err(int, int, const char *);/* {Prog senderr} */
>> int         serv_listen(const char *);    /* {Progs servlisten_svr4
>> servlisten_44bsd} */
>> int         serv_accept(int, uid_t *);    /* {Progs servaccept_svr4
>> servaccept_44bsd} */
>> int         cli_conn(const char *);    /* {Progs cliconn_svr4
>> cliconn_44bsd} */
>> int         buf_args(char *, int (*func)(int, char **));
>>                                     /* {Prog bufargs} */
>>
>> int         ptym_open(char *);            /* {Progs ptyopen_svr4
>> ptyopen_44bsd} */
>> int         ptys_open(int, char *);    /* {Progs ptyopen_svr4
>> ptyopen_44bsd} */
>> #ifdef    TIOCGWINSZ
>> pid_t     pty_fork(int *, char *, const struct termios *,
>>                   const struct winsize *);    /* {Prog ptyfork} */
>> #endif
>>
>> int        lock_reg(int, int, int, off_t, int, off_t);
>>                                     /* {Prog lockreg} */
>> #define    read_lock(fd, offset, whence, len) \
>>             lock_reg(fd, F_SETLK, F_RDLCK, offset, whence, len)
>> #define    readw_lock(fd, offset, whence, len) \
>>             lock_reg(fd, F_SETLKW, F_RDLCK, offset, whence, len)
>> #define    write_lock(fd, offset, whence, len) \
>>             lock_reg(fd, F_SETLK, F_WRLCK, offset, whence, len)
>> #define    writew_lock(fd, offset, whence, len) \
>>             lock_reg(fd, F_SETLKW, F_WRLCK, offset, whence, len)
>> #define    un_lock(fd, offset, whence, len) \
>>             lock_reg(fd, F_SETLK, F_UNLCK, offset, whence, len)
>>
>> pid_t    lock_test(int, int, off_t, int, off_t);
>>                                     /* {Prog locktest} */
>>
>> #define    is_readlock(fd, offset, whence, len) \
>>             lock_test(fd, F_RDLCK, offset, whence, len)
>> #define    is_writelock(fd, offset, whence, len) \
>>             lock_test(fd, F_WRLCK, offset, whence, len)
>>
>> void    err_dump(const char *, ...);    /* {App misc_source} */
>> void    err_msg(const char *, ...);
>> void    err_quit(const char *, ...);
>> void    err_ret(const char *, ...);
>> void    err_sys(const char *, ...);
>>
>> void    log_msg(const char *, ...);        /* {App misc_source} */
>> void    log_open(const char *, int, int);
>> void    log_quit(const char *, ...);
>> void    log_ret(const char *, ...);
>> void    log_sys(const char *, ...);
>>
>> void    TELL_WAIT(void);        /* parent/child from {Sec
>> race_conditions} */
>> void    TELL_PARENT(pid_t);
>> void    TELL_CHILD(pid_t);
>> void    WAIT_PARENT(void);
>> void    WAIT_CHILD(void);
>>
>> #endif    /* __ourhdr_h */
>
>
> Source: <http://www.yendor.com/programming/unix/apue/apue.html>
>
> --
> With over 950 million devices now running Windows 10, customer
> satisfaction is higher than any previous version of windows.

David Kaasen

unread,
Jul 17, 2018, 10:32:41 AM7/17/18
to
Hello!
You should extract the files on Unix/Raspbian, as they understand links.
"zcat apue.tar.Z |tar tvf - |grep link\ to" gives:

hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/call/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/call/loop.poll.c link to apue/call/loop.c
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/calld/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/datafiles/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/db.lock.fine/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/environ/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/file/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/ipc/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/lib.sun/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.44/bufargs.c link to apue/lib.sun/bufargs.c
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/lib.44/clrfl.c link to apue/lib.sun/clrfl.c
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.44/daemoninit.c link to apue/lib.sun/daemoninit.c
hrw-r--r-- 224/20 0 1992-05-30 23:46 apue/lib.44/errorlog.c link to apue/lib.sun/errorlog.c
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.44/lockreg.c link to apue/lib.sun/lockreg.c
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.44/locktest.c link to apue/lib.sun/locktest.c
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.44/nspipe.c link to apue/lib.sun/nspipe.c
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.44/openmax.c link to apue/lib.sun/openmax.c
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.44/pathalloc.c link to apue/lib.sun/pathalloc.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/popen.c link to apue/lib.sun/popen.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/prexit.c link to apue/lib.sun/prexit.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/prmask.c link to apue/lib.sun/prmask.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/ptyfork.c link to apue/lib.sun/ptyfork.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/ptyopen.c link to apue/lib.sun/ptyopen.c
hrw-r--r-- 224/20 0 1992-05-30 23:47 apue/lib.44/readn.c link to apue/lib.sun/readn.c
hrw-r--r-- 224/20 0 1992-05-30 23:47 apue/lib.44/semaph.c link to apue/lib.sun/semaph.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/senderr.c link to apue/lib.sun/senderr.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/setfl.c link to apue/lib.sun/setfl.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/signal.c link to apue/lib.sun/signal.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/signalintr.c link to apue/lib.sun/signalintr.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/sleep.c link to apue/lib.sun/sleep.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/sleepus.c link to apue/lib.sun/sleepus.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/spipe.c link to apue/lib.sun/spipe.c
hrw-r--r-- 224/20 0 1992-05-30 23:45 apue/lib.44/strerror.c link to apue/lib.sun/strerror.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/tellwait.c link to apue/lib.sun/tellwait.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/ttymodes.c link to apue/lib.sun/ttymodes.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.44/writen.c link to apue/lib.sun/writen.c
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/lib.44/ourhdr.h link to apue/advio/ourhdr.h
hrwxr-xr-x 224/20 0 1992-05-30 23:45 apue/lib.44/systype.sh link to apue/lib.sun/systype.sh
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.svr4/bufargs.c link to apue/lib.sun/bufargs.c
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/lib.svr4/clrfl.c link to apue/lib.sun/clrfl.c
hrw-r--r-- 224/20 0 1992-05-30 23:46 apue/lib.svr4/error.c link to apue/lib.44/error.c
hrw-r--r-- 224/20 0 1992-05-30 23:46 apue/lib.svr4/errorlog.c link to apue/lib.sun/errorlog.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/popen.c link to apue/lib.sun/popen.c
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.svr4/lockreg.c link to apue/lib.sun/lockreg.c
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.svr4/locktest.c link to apue/lib.sun/locktest.c
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.svr4/nspipe.c link to apue/lib.sun/nspipe.c
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.svr4/openmax.c link to apue/lib.sun/openmax.c
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/lib.svr4/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.svr4/pathalloc.c link to apue/lib.sun/pathalloc.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/prexit.c link to apue/lib.sun/prexit.c
hrw-r--r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/readn.c link to apue/lib.sun/readn.c
hrw-r--r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/semaph.c link to apue/lib.sun/semaph.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/senderr.c link to apue/lib.sun/senderr.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/setfl.c link to apue/lib.sun/setfl.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/signal.c link to apue/lib.sun/signal.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/signalintr.c link to apue/lib.sun/signalintr.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/sleep.c link to apue/lib.sun/sleep.c
hrw-r--r-- 224/20 0 1992-05-30 23:45 apue/lib.svr4/strerror.c link to apue/lib.sun/strerror.c
hrwxr-xr-x 224/20 0 1992-05-30 23:45 apue/lib.svr4/systype.sh link to apue/lib.sun/systype.sh
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/tellwait.c link to apue/lib.sun/tellwait.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/ttymodes.c link to apue/lib.sun/ttymodes.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/prmask.c link to apue/lib.sun/prmask.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/writen.c link to apue/lib.sun/writen.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/spipe.socket.c link to apue/lib.sun/spipe.c
hrw-rw-r-- 224/20 0 1992-05-30 23:46 apue/lib.svr4/daemoninit.c link to apue/lib.sun/daemoninit.c
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/lib.svr4/ptyfork.c link to apue/lib.sun/ptyfork.c
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/lock/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/mycat/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/open.fe/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/open/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/opend.fe/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/opend/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:47 apue/opend/loop.select.c link to apue/opend/loop.c
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/printer/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/proc/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/pty/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/sess/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/signals/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/stdio/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/streams/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/termios/ourhdr.h link to apue/advio/ourhdr.h
hrw-rw-r-- 224/20 0 1992-05-30 23:45 apue/test/ourhdr.h link to apue/advio/ourhdr.h

Regards from
David Kaasen.

Lorinczy Zsigmond

unread,
Aug 29, 2018, 7:58:43 AM8/29/18
to
Try to uncompress file "apue/advio/ourhdr.h"
in unix:

zcat apue.tar.Z | tar -xf - apue/advio/ourhdr.h
Reply all
Reply to author
Forward
0 new messages