XPost: alt.comp.lang.c
This is a multi-part message in MIME format.
On 05/07/2018 14:50, Peter Percival wrote:
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.
Put this code in the empty file or files:
/* 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.
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FCFBE3" text="#000000">
<div class="moz-cite-prefix">On 05/07/2018 14:50, Peter Percival
wrote:<br>
</div>
<blockquote cite="mid:phl7ne$6lm$
[email protected]" type="cite">W.
Richard Stevens' /Advanced programming in the Unix environment/
features a file ourhdr.h. I have downloaded the source code for
the book from <a class="moz-txt-link-freetext" href="
http://www.kohala.com/start/apue.tar.Z">http://www.kohala.com/start/apue.tar.Z</a>. There are a
number of files called ourhdr.h but they all seem to be empty.
<br>
<br>
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.
<br>
</blockquote>
<br>
Put this code in the empty file or files:<br>
<br>
<blockquote type="cite">/* Our own header, to be included *after*
all standard system headers */<br>
<br>
#ifndef __ourhdr_h<br>
#define __ourhdr_h<br>
<br>
#include <sys/types.h> /* required for some of our
prototypes */<br>
#include <stdio.h> /* for convenience */<br>
#include <stdlib.h> /* for convenience */<br>
#include <string.h> /* for convenience */<br>
#include <unistd.h> /* for convenience */<br>
<br>
#ifdef notdef /* delete for systems that don't define this
(SunOS 4.x) */<br>
typedef int ssize_t;<br>
#endif<br>
<br>
#ifdef notdef /* delete if <stdlib.h> doesn't define
these for getopt() */<br>
extern char *optarg;<br>
extern int optind, opterr, optopt;<br>
#endif<br>
<br>
#ifdef notdef /* delete if send() not supported (DEC OSF/1)
*/<br>
#define send(a,b,c,d) sendto((a), (b), (c), (d), (struct
sockaddr *) NULL, 0)<br>
#endif<br>
<br>
#define MAXLINE 4096 /* max line length */<br>
<br>
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)<br>
/* default file access permissions for new
files */<br>
#define DIR_MODE (FILE_MODE | S_IXUSR | S_IXGRP | S_IXOTH)<br>
/* default permissions for new directories */<br>
<br>
typedef void Sigfunc(int); /* for signal handlers */<br>
<br>
/* 4.3BSD Reno <signal.h> doesn't define
SIG_ERR */<br>
#if defined(SIG_IGN) && !defined(SIG_ERR)<br>
#define SIG_ERR ((Sigfunc *)-1)<br>
#endif<br>
<br>
#define min(a,b) ((a) < (b) ? (a) : (b))<br>
#define max(a,b) ((a) > (b) ? (a) : (b))<br>
<br>
/* prototypes for our own functions */<br>
char *path_alloc(int *); /* {Prog pathalloc} */<br>
int open_max(void); /* {Prog openmax} */<br>
void clr_fl(int, int); /* {Prog setfl} */<br>
void set_fl(int, int); /* {Prog setfl} */<br>
void pr_exit(int); /* {Prog prexit} */<br>
void pr_mask(const char *); /* {Prog prmask} */<br>
Sigfunc *signal_intr(int, Sigfunc *);/* {Prog
signal_intr_function} */<br>
<br>
int tty_cbreak(int); /* {Prog raw} */<br>
int tty_raw(int); /* {Prog raw} */<br>
int tty_reset(int); /* {Prog raw} */<br>
void tty_atexit(void); /* {Prog raw} */<br>
#ifdef ECHO /* only if <termios.h> has been included
*/<br>
struct termios *tty_termios(void); /* {Prog raw} */<br>
#endif<br>
<br>
void sleep_us(unsigned int); /* {Ex sleepus} */<br>
ssize_t readn(int, void *, size_t);/* {Prog readn} */<br>
ssize_t writen(int, const void *, size_t);/* {Prog writen} */<br>
int daemon_init(void); /* {Prog daemoninit} */<br>
<br>
int s_pipe(int *); /* {Progs svr4_spipe
bsd_spipe} */<br>
int recv_fd(int, ssize_t (*func)(int, const void *,
size_t));<br>
/* {Progs recvfd_svr4
recvfd_43bsd} */<br>
int send_fd(int, int); /* {Progs sendfd_svr4
sendfd_43bsd} */<br>
int send_err(int, int, const char *);/* {Prog senderr} */<br>
int serv_listen(const char *); /* {Progs
servlisten_svr4 servlisten_44bsd} */<br>
int serv_accept(int, uid_t *); /* {Progs
servaccept_svr4 servaccept_44bsd} */<br>
int cli_conn(const char *); /* {Progs cliconn_svr4
cliconn_44bsd} */<br>
int buf_args(char *, int (*func)(int, char **));<br>
/* {Prog bufargs} */<br>
<br>
int ptym_open(char *); /* {Progs ptyopen_svr4
ptyopen_44bsd} */<br>
int ptys_open(int, char *); /* {Progs ptyopen_svr4
ptyopen_44bsd} */<br>
#ifdef TIOCGWINSZ<br>
pid_t pty_fork(int *, char *, const struct termios *,<br>
const struct winsize *); /* {Prog ptyfork} */<br>
#endif<br>
<br>
int lock_reg(int, int, int, off_t, int, off_t);<br>
/* {Prog lockreg} */<br>
#define read_lock(fd, offset, whence, len) \<br>
lock_reg(fd, F_SETLK, F_RDLCK, offset, whence, len)<br>
#define readw_lock(fd, offset, whence, len) \<br>
lock_reg(fd, F_SETLKW, F_RDLCK, offset, whence, len)<br>
#define write_lock(fd, offset, whence, len) \<br>
lock_reg(fd, F_SETLK, F_WRLCK, offset, whence, len)<br>
#define writew_lock(fd, offset, whence, len) \<br>
lock_reg(fd, F_SETLKW, F_WRLCK, offset, whence, len)<br>
#define un_lock(fd, offset, whence, len) \<br>
lock_reg(fd, F_SETLK, F_UNLCK, offset, whence, len)<br>
<br>
pid_t lock_test(int, int, off_t, int, off_t);<br>
/* {Prog locktest} */<br>
<br>
#define is_readlock(fd, offset, whence, len) \<br>
lock_test(fd, F_RDLCK, offset, whence, len)<br>
#define is_writelock(fd, offset, whence, len) \<br>
lock_test(fd, F_WRLCK, offset, whence, len)<br>
<br>
void err_dump(const char *, ...); /* {App misc_source} */<br>
void err_msg(const char *, ...);<br>
void err_quit(const char *, ...);<br>
void err_ret(const char *, ...);<br>
void err_sys(const char *, ...);<br>
<br>
void log_msg(const char *, ...); /* {App misc_source} */<br>
void log_open(const char *, int, int);<br>
void log_quit(const char *, ...);<br>
void log_ret(const char *, ...);<br>
void log_sys(const char *, ...);<br>
<br>
void TELL_WAIT(void); /* parent/child from {Sec
race_conditions} */<br>
void TELL_PARENT(pid_t);<br>
void TELL_CHILD(pid_t);<br>
void WAIT_PARENT(void);<br>
void WAIT_CHILD(void);<br>
<br>
#endif /* __ourhdr_h */<br>
</blockquote>
<br>
<br>
Source:
<a class="moz-txt-link-rfc2396E" href="
http://www.yendor.com/programming/unix/apue/apue.html"><http://www.yendor.com/programming/unix/apue/apue.html></a><br>
<br>
<div class="moz-signature">-- <br>
<div class="moz-signature">
<div style="width: 340px;height: 290px; background-color: blue;
color: yellow;font-weight: bolder; font-size:200%; text-align:
center; margin: 30px 5px 30px 5px;">With over 950 million
devices now running Windows 10, customer satisfaction is
higher than any previous version of windows.</div>
</div>
</div>
</body>
</html>
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)