Replaced tabs with spaces

This commit is contained in:
Michael Kerrisk 2007-04-05 13:29:41 +00:00
parent 1bef0ec265
commit 7295b7eda0
31 changed files with 250 additions and 250 deletions

View File

@ -33,6 +33,10 @@ bdflush.2
mtk
Add <sys/kdaemon.h> header file to SYNOPSIS.
sched_rr_get_interval.2
mtk
Moved timespec definition from SYNOPSIS into description.
select_tut.2
mtk
Make SYNOPSIS match select.2.

View File

@ -86,8 +86,8 @@ you call the system call by \fIname\fP.
.nf
#include <stdio.h>
#include <errno.h>
#include <linux/unistd.h> /* for _syscallX macros/related stuff */
#include <linux/kernel.h> /* for struct sysinfo */
#include <linux/unistd.h> /* for _syscallX macros/related stuff */
#include <linux/kernel.h> /* for struct sysinfo */
_syscall1(int, sysinfo, struct sysinfo *, info);

View File

@ -64,21 +64,16 @@ The
.I msgp
argument is a pointer to caller-defined structure
of the following general form:
.sp
.B
struct msgbuf {
.br
.B
long mtype;
/* message type, must be > 0 */
.br
.B
char mtext[1];
/* message data */
.br
.B
};
.sp
.in +0.5i
.nf
struct msgbuf {
long mtype; /* message type, must be > 0 */
char mtext[1]; /* message data */
};
.fi
.in -0.5i
.PP
The
.I mtext
field is an array (or other structure) whose size is specified by

View File

@ -205,22 +205,21 @@ is a struct with the following elements
.sp
.RS
.nf
.ta 4 13 24
siginfo_t {
int si_signo; /* Signal number */
int si_errno; /* An errno value */
int si_code; /* Signal code */
pid_t si_pid; /* Sending process ID */
uid_t si_uid; /* Real user ID of sending process */
int si_status; /* Exit value or signal */
clock_t si_utime; /* User time consumed */
clock_t si_stime; /* System time consumed */
sigval_t si_value; /* Signal value */
int si_int; /* POSIX.1b signal */
void * si_ptr; /* POSIX.1b signal */
void * si_addr; /* Memory location which caused fault */
int si_band; /* Band event */
int si_fd; /* File descriptor */
int si_signo; /* Signal number */
int si_errno; /* An errno value */
int si_code; /* Signal code */
pid_t si_pid; /* Sending process ID */
uid_t si_uid; /* Real user ID of sending process */
int si_status; /* Exit value or signal */
clock_t si_utime; /* User time consumed */
clock_t si_stime; /* System time consumed */
sigval_t si_value; /* Signal value */
int si_int; /* POSIX.1b signal */
void *si_ptr; /* POSIX.1b signal */
void *si_addr; /* Memory location which caused fault */
int si_band; /* Band event */
int si_fd; /* File descriptor */
}
.fi
.RE

View File

@ -99,7 +99,7 @@ main(int argc, char **argv)
if (res == NULL)
printf("'%s': unknown month\en", argv[i]);
else
printf("%s: month #%d\en", res->name, res->nr);
printf("%s: month #%d\en", res->name, res->nr);
}
return 0;
}

View File

@ -55,7 +55,7 @@ Used in security-conscious applications. If it is unavailable
the assignment
.RS
.nf
environ = NULL;
environ = NULL;
.fi
.RE
will probably do.

View File

@ -143,20 +143,20 @@ int received_ttl;
/* Receive auxiliary data in msgh */
for (cmsg = CMSG_FIRSTHDR(&msgh);
cmsg != NULL;
cmsg = CMSG_NXTHDR(&msgh,cmsg)) {
if (cmsg->cmsg_level == IPPROTO_IP
&& cmsg->cmsg_type == IP_TTL) {
ttlptr = (int *) CMSG_DATA(cmsg);
received_ttl = *ttlptr;
break;
}
cmsg != NULL;
cmsg = CMSG_NXTHDR(&msgh,cmsg)) {
if (cmsg->cmsg_level == IPPROTO_IP
&& cmsg->cmsg_type == IP_TTL) {
ttlptr = (int *) CMSG_DATA(cmsg);
received_ttl = *ttlptr;
break;
}
}
if (cmsg == NULL) {
/*
* Error: IP_TTL not enabled or small buffer
* or I/O error.
*/
/*
* Error: IP_TTL not enabled or small buffer
* or I/O error.
*/
}
.ta
.fi

View File

@ -48,21 +48,19 @@ entries. The file \fIstream\fP must have the same format as
.PP
The \fIpasswd\fP structure is defined in \fI<pwd.h>\fP as follows:
.sp
.RS
.in +0.5i
.nf
.ta 8n 16n 32n
struct passwd {
char *pw_name; /* user name */
char *pw_passwd; /* user password */
uid_t pw_uid; /* user ID */
gid_t pw_gid; /* group ID */
char *pw_gecos; /* real name */
char *pw_dir; /* home directory */
char *pw_shell; /* shell program */
char *pw_name; /* user name */
char *pw_passwd; /* user password */
uid_t pw_uid; /* user ID */
gid_t pw_gid; /* group ID */
char *pw_gecos; /* real name */
char *pw_dir; /* home directory */
char *pw_shell; /* shell program */
};
.ta
.fi
.RE
.in -0.5i
.SH "RETURN VALUE"
The \fBfgetpwent\fP() function returns the passwd structure, or NULL if
there are no more entries or an error occurs.

View File

@ -78,7 +78,7 @@ main(int argc, char *argv[])
r = frexp(x, &exp);
printf("frexp(%g, &e) = %g: %g * %d^%d = %g\\n",
x, r, r, FLT_RADIX, exp, x);
x, r, r, FLT_RADIX, exp, x);
exit(EXIT_SUCCESS);
} /* main */
.fi

View File

@ -42,10 +42,10 @@ which is declared as follows:
.in +1i
.nf
struct timeb {
time_t time;
unsigned short millitm;
short timezone;
short dstflag;
time_t time;
unsigned short millitm;
short timezone;
short dstflag;
};
.fi
.in -1i

View File

@ -93,21 +93,18 @@ of size
.PP
The \fImntent\fP structure is defined in \fI<mntent.h>\fP as follows:
.sp
.RS
.in +0.5i
.nf
.ne 8
.ta 8n 16n 32n
struct mntent {
char *mnt_fsname; /* name of mounted file system */
char *mnt_dir; /* file system path prefix */
char *mnt_type; /* mount type (see mntent.h) */
char *mnt_opts; /* mount options (see mntent.h) */
int mnt_freq; /* dump frequency in days */
int mnt_passno; /* pass number on parallel fsck */
char *mnt_fsname; /* name of mounted file system */
char *mnt_dir; /* file system path prefix */
char *mnt_type; /* mount type (see mntent.h) */
char *mnt_opts; /* mount options (see mntent.h) */
int mnt_freq; /* dump frequency in days */
int mnt_passno; /* pass number on parallel fsck */
};
.ta
.fi
.RE
.in -0.5i
Since fields in the mtab and fstab files are separated by whitespace,
octal escapes are used to represent the four characters space (\e040),

View File

@ -66,19 +66,16 @@ The \fBendnetent\fP() function closes \fI/etc/networks\fP.
.PP
The \fInetent\fP structure is defined in \fI<netdb.h>\fP as follows:
.sp
.RS
.in +0.5i
.nf
.ne 6
.ta 8n 16n 34n
struct netent {
char *n_name; /* official network name */
char **n_aliases; /* alias list */
int n_addrtype; /* net address type */
unsigned long int n_net; /* network number */
char *n_name; /* official network name */
char **n_aliases; /* alias list */
int n_addrtype; /* net address type */
unsigned long n_net; /* network number */
}
.ta
.fi
.RE
.in -0.5i
.PP
The members of the \fInetent\fP structure are:
.TP

View File

@ -65,18 +65,15 @@ The \fBendprotoent\fP() function closes \fI/etc/protocols\fP.
.PP
The \fIprotoent\fP structure is defined in \fI<netdb.h>\fP as follows:
.sp
.RS
.in +0.5i
.nf
.ne 5
.ta 8n 16n 32n
struct protoent {
char *p_name; /* official protocol name */
char **p_aliases; /* alias list */
int p_proto; /* protocol number */
char *p_name; /* official protocol name */
char **p_aliases; /* alias list */
int p_proto; /* protocol number */
}
.ta
.fi
.RE
.in -0.5i
.PP
The members of the \fIprotoent\fP structure are:
.TP

View File

@ -50,17 +50,15 @@ The \fIpasswd\fP structure is defined in \fI<pwd.h>\fP as follows:
.sp
.RS
.nf
.ta 8n 16n 32n
struct passwd {
char *pw_name; /* user name */
char *pw_passwd; /* user password */
uid_t pw_uid; /* user ID */
gid_t pw_gid; /* group ID */
char *pw_gecos; /* real name */
char *pw_dir; /* home directory */
char *pw_shell; /* shell program */
char *pw_name; /* user name */
char *pw_passwd; /* user password */
uid_t pw_uid; /* user ID */
gid_t pw_gid; /* group ID */
char *pw_gecos; /* real name */
char *pw_dir; /* home directory */
char *pw_shell; /* shell program */
};
.ta
.fi
.RE
.SH "RETURN VALUE"

View File

@ -74,15 +74,12 @@ The \fIservent\fP structure is defined in \fI<netdb.h>\fP as follows:
.sp
.RS
.nf
.ne 6
.ta 8n 16n 32n
struct servent {
char *s_name; /* official service name */
char **s_aliases; /* alias list */
int s_port; /* port number */
char *s_proto; /* protocol to use */
char *s_name; /* official service name */
char **s_aliases; /* alias list */
int s_port; /* port number */
char *s_proto; /* protocol to use */
}
.ta
.fi
.RE
.PP

View File

@ -71,12 +71,14 @@ the hash table so that a new table can be constructed.
.PP
The argument \fIitem\fP is of type \fBENTRY\fP, which is a typedef defined in
\fI<search.h>\fP and includes these elements:
.RS
.sp
.nf
typedef struct entry {
char *\fIkey\fP;
void *\fIdata\fP;
} ENTRY;
typedef struct entry {
char *\fIkey\fP;
void *\fIdata\fP;
} ENTRY;
.RE
.fi
.sp
The field \fIkey\fP points to the null-terminated string which is the

View File

@ -96,7 +96,7 @@ then two additional arguments must be supplied.
The
.I mode
argument specifies the permissions to be placed on the new queue,
as for
as for
.BR open (2).
The permissions settings are masked against the process umask.
The

View File

@ -155,13 +155,17 @@ the position in the argument list of the desired argument, indexed starting
from 1. Thus,
.RS
.nf
printf("%*d", width, num);
printf("%*d", width, num);
.fi
.RE
and
.RS
.nf
printf("%2$*1$d", width, num);
printf("%2$*1$d", width, num);
.fi
.RE
are equivalent. The second style allows repeated references to the
@ -181,7 +185,7 @@ uses `.' as radix character, and does not have a grouping character.
Thus,
.RS
.nf
printf("%'.2f", 1234567.89);
printf("%'.2f", 1234567.89);
.fi
.RE
results in `1234567.89' in the POSIX locale, in `1234567,89' in the
@ -711,6 +715,7 @@ specification is `%%'.
To print \*(Pi to five decimal places:
.RS
.nf
#include <math.h>
#include <stdio.h>
fprintf(stdout, "pi = %.5f\en", 4 * atan(1.0));
@ -725,9 +730,10 @@ and
are pointers to strings:
.RS
.nf
#include <stdio.h>
fprintf(stdout, "%s, %s %d, %.2d:%.2d\en",
weekday, month, day, hour, min);
weekday, month, day, hour, min);
.fi
.RE
.PP
@ -736,9 +742,11 @@ Hence, an internationalized version must be able to print
the arguments in an order specified by the format:
.RS
.nf
#include <stdio.h>
fprintf(stdout, format,
weekday, month, day, hour, min);
weekday, month, day, hour, min);
.fi
.RE
where
@ -755,40 +763,42 @@ To allocate a sufficiently large string and print into it
(code correct for both glibc 2.0 and glibc 2.1):
.RS
.nf
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
char *
make_message(const char *fmt, ...) {
/* Guess we need no more than 100 bytes. */
int n, size = 100;
char *p, *np;
va_list ap;
make_message(const char *fmt, ...)
{
/* Guess we need no more than 100 bytes. */
int n, size = 100;
char *p, *np;
va_list ap;
if ((p = malloc(size)) == NULL)
return NULL;
if ((p = malloc(size)) == NULL)
return NULL;
while (1) {
/* Try to print in the allocated space. */
va_start(ap, fmt);
n = vsnprintf(p, size, fmt, ap);
va_end(ap);
/* If that worked, return the string. */
if (n > \-1 && n < size)
return p;
/* Else try again with more space. */
if (n > \-1) /* glibc 2.1 */
size = n+1; /* precisely what is needed */
else /* glibc 2.0 */
size *= 2; /* twice the old size */
if ((np = realloc (p, size)) == NULL) {
free(p);
return NULL;
} else {
p = np;
}
}
while (1) {
/* Try to print in the allocated space. */
va_start(ap, fmt);
n = vsnprintf(p, size, fmt, ap);
va_end(ap);
/* If that worked, return the string. */
if (n > \-1 && n < size)
return p;
/* Else try again with more space. */
if (n > \-1) /* glibc 2.1 */
size = n+1; /* precisely what is needed */
else /* glibc 2.0 */
size *= 2; /* twice the old size */
if ((np = realloc (p, size)) == NULL) {
free(p);
return NULL;
} else {
p = np;
}
}
}
.fi
.RE

View File

@ -93,7 +93,7 @@ and then read the byte of data at the mark:
perror("sockatmark");
break;
}
if (atmark)
break;

View File

@ -154,15 +154,15 @@ In such a setup (by far the most common) there seems
nothing against an assignment
.RS
.nf
va_list aq = ap;
va_list aq = ap;
.fi
.RE
Unfortunately, there are also systems that make it an
array of pointers (of length 1), and there one needs
.RS
.nf
va_list aq;
*aq = *ap;
va_list aq;
*aq = *ap;
.fi
.RE
Finally, on systems where parameters are passed in registers,
@ -179,10 +179,10 @@ To accommodate this situation, C99 adds a macro
so that the above assignment can be replaced by
.RS
.nf
va_list aq;
va_copy(aq, ap);
...
va_end(aq);
va_list aq;
va_copy(aq, ap);
...
va_end(aq);
.fi
.RE
Each invocation of
@ -205,30 +205,32 @@ with each format character based on the type.
#include <stdio.h>
#include <stdarg.h>
void foo(char *fmt, ...) {
va_list ap;
int d;
char c, *s;
void
foo(char *fmt, ...)
{
va_list ap;
int d;
char c, *s;
va_start(ap, fmt);
while (*fmt)
switch(*fmt++) {
case 's': /* string */
s = va_arg(ap, char *);
printf("string %s\en", s);
break;
case 'd': /* int */
d = va_arg(ap, int);
printf("int %d\en", d);
break;
case 'c': /* char */
/* need a cast here since va_arg only
takes fully promoted types */
c = (char) va_arg(ap, int);
printf("char %c\en", c);
break;
}
va_end(ap);
va_start(ap, fmt);
while (*fmt)
switch(*fmt++) {
case 's': /* string */
s = va_arg(ap, char *);
printf("string %s\en", s);
break;
case 'd': /* int */
d = va_arg(ap, int);
printf("int %d\en", d);
break;
case 'c': /* char */
/* need a cast here since va_arg only
takes fully promoted types */
c = (char) va_arg(ap, int);
printf("char %c\en", c);
break;
}
va_end(ap);
}
.fi
.RE
@ -254,16 +256,19 @@ The historic setup is:
.nf
#include <varargs.h>
void foo(va_alist) va_dcl {
va_list ap;
void
foo(va_alist)
va_dcl
{
va_list ap;
va_start(ap);
while(...) {
...
x = va_arg(ap, type);
...
}
va_end(ap);
va_start(ap);
while(...) {
...
x = va_arg(ap, type);
...
}
va_end(ap);
}
.fi
.RE

View File

@ -310,14 +310,17 @@ Of course programmers are encouraged to use %c, it gives the preferred
date and time representation. One meets all kinds of strange obfuscations
to circumvent this gcc problem. A relatively clean one is to add an
intermediate function
.RS
size_t my_strftime(char *s, size_t max, const char *fmt,
const struct tm *tm) {
.br
return strftime(s, max, fmt, tm);
.br
.in +0.5i
.nf
size_t
my_strftime(char *s, size_t max, const char *fmt,
const struct tm *tm)
{
return strftime(s, max, fmt, tm);
}
.RE
.fi
.in -0.5i
.SH EXAMPLE
The program below can be used to experiment with
.BR strftime ().

View File

@ -666,7 +666,7 @@ until \fBtcsetattr\fP() is successfully called.
Setting the speed to \fBB0\fP instructs the modem to "hang up".
The actual bit rate corresponding to \fBB38400\fP may be altered with
\fBsetserial\fP(8).
\fBsetserial\fP(8).
.LP
The input and output baud rates are stored in the \fItermios\fP
structure.

View File

@ -226,7 +226,9 @@ For example, the following shell command line would change
the normal root device to
.IR /dev/hdb1 :
.nf
echo 0x365 >/proc/sys/kernel/real-root-dev
echo 0x365 >/proc/sys/kernel/real-root-dev
.fi
For a NFS example, the following shell command lines would change the
normal root device to the NFS directory
@ -234,10 +236,11 @@ normal root device to the NFS directory
on a local networked NFS server with IP number 193.8.232.7 for a system with
IP number 193.8.232.7 and named 'idefix':
.nf
echo /var/nfsroot >/proc/sys/kernel/nfs-root-name
echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \\
>/proc/sys/kernel/nfs-root-addrs
echo 255 >/proc/sys/kernel/real-root-dev
echo /var/nfsroot >/proc/sys/kernel/nfs-root-name
echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \\
>/proc/sys/kernel/nfs-root-addrs
echo 255 >/proc/sys/kernel/real-root-dev
.fi
.BR Note :

View File

@ -49,9 +49,9 @@ If your system does not have
can be created with the following commands:
.nf
mknod \-m 644 /dev/random c 1 8
mknod \-m 644 /dev/urandom c 1 9
chown root:root /dev/random /dev/urandom
mknod \-m 644 /dev/random c 1 8
mknod \-m 644 /dev/urandom c 1 9
chown root:root /dev/random /dev/urandom
.fi
When a Linux system starts up without much operator interaction,
@ -63,34 +63,34 @@ To do this, add the following lines to an appropriate script
which is run during the Linux system start-up sequence:
.nf
echo "Initializing random number generator..."
random_seed=/var/run/random-seed
# Carry a random seed from start-up to start-up
# Load and then save the whole entropy pool
if [ \-f $random_seed ]; then
cat $random_seed >/dev/urandom
else
touch $random_seed
fi
chmod 600 $random_seed
poolfile=/proc/sys/kernel/random/poolsize
[ \-r $poolfile ] && bytes=`cat $poolfile` || bytes=512
dd if=/dev/urandom of=$random_seed count=1 bs=$bytes
echo "Initializing random number generator..."
random_seed=/var/run/random-seed
# Carry a random seed from start-up to start-up
# Load and then save the whole entropy pool
if [ \-f $random_seed ]; then
cat $random_seed >/dev/urandom
else
touch $random_seed
fi
chmod 600 $random_seed
poolfile=/proc/sys/kernel/random/poolsize
[ \-r $poolfile ] && bytes=`cat $poolfile` || bytes=512
dd if=/dev/urandom of=$random_seed count=1 bs=$bytes
.fi
Also, add the following lines in an appropriate script which is
run during the Linux system shutdown:
.nf
# Carry a random seed from shut-down to start-up
# Save the whole entropy pool
echo "Saving random seed..."
random_seed=/var/run/random-seed
touch $random_seed
chmod 600 $random_seed
poolfile=/proc/sys/kernel/random/poolsize
[ \-r $poolfile ] && bytes=`cat $poolfile` || bytes=512
dd if=/dev/urandom of=$random_seed count=1 bs=$bytes
# Carry a random seed from shut-down to start-up
# Save the whole entropy pool
echo "Saving random seed..."
random_seed=/var/run/random-seed
touch $random_seed
chmod 600 $random_seed
poolfile=/proc/sys/kernel/random/poolsize
[ \-r $poolfile ] && bytes=`cat $poolfile` || bytes=512
dd if=/dev/urandom of=$random_seed count=1 bs=$bytes
.fi
.SH "PROC INTERFACE"
The files in the directory

View File

@ -76,11 +76,11 @@ network is not connected to the Internet, DNS offers little
advantage.
.SH EXAMPLE
.nf
127.0.0.1 localhost
192.168.1.10 foo.mydomain.org foo
192.168.1.13 bar.mydomain.org bar
146.82.138.7 master.debian.org master
209.237.226.90 www.opensource.org
127.0.0.1 localhost
192.168.1.10 foo.mydomain.org foo
192.168.1.13 bar.mydomain.org bar
146.82.138.7 master.debian.org master
209.237.226.90 www.opensource.org
.fi
.SH "NOTE"
Modifications to this file normally take effect immediately,

View File

@ -63,11 +63,10 @@ these structures are defined as follows:
.in +.5i
.sp
.nf
.ta .5i +\w'unsigned int\0\0'u
struct ttinfo {
long tt_gmtoff;
int tt_isdst;
unsigned int tt_abbrind;
long tt_gmtoff;
int tt_isdst;
unsigned int tt_abbrind;
};
.in -.5i
.fi

View File

@ -67,13 +67,12 @@ They take a pointer to a
as their parameter.
.nf
.ta 4 20 33
struct arpreq {
struct sockaddr arp_pa; /* protocol address */
struct sockaddr arp_ha; /* hardware address */
int arp_flags; /* flags */
struct sockaddr arp_netmask; /* netmask of protocol address */
char arp_dev[16];
struct sockaddr arp_pa; /* protocol address */
struct sockaddr arp_ha; /* hardware address */
int arp_flags; /* flags */
struct sockaddr arp_netmask; /* netmask of protocol address */
char arp_dev[16];
};
.fi

View File

@ -33,7 +33,7 @@ Link with \-lm. The imaginary unit is represented by I.
.sp
.nf
/* check that exp(i * pi) == \-1 */
#include <math.h> /* for atan */
#include <math.h> /* for atan */
#include <complex.h>
int

View File

@ -58,16 +58,15 @@ a node number, and a port number.
.PP
.RS
.nf
.ta 4n 20n 32n
struct at_addr {
u_short s_net;
u_char s_node;
u_short s_net;
u_char s_node;
};
struct sockaddr_atalk {
sa_family_t sat_family; /* address family */
u_char sat_port; /* port */
struct at_addr sat_addr; /* net/node */
sa_family_t sat_family; /* address family */
u_char sat_port; /* port */
struct at_addr sat_addr; /* net/node */
};
.ta
.fi

View File

@ -90,7 +90,7 @@ definition. It allowed one to have patterns that expand into
an empty list, as in
.br
.nf
xv \-wait 0 *.gif *.jpg
xv \-wait 0 *.gif *.jpg
.fi
where perhaps no *.gif files are present (and this is not
an error).
@ -105,12 +105,12 @@ one can force the classical behaviour by setting
(Similar problems occur elsewhere. E.g., where old scripts have
.br
.nf
rm `find . \-name "*~"`
rm `find . \-name "*~"`
.fi
new scripts require
.br
.nf
rm \-f nosuchfile `find . \-name "*~"`
rm \-f nosuchfile `find . \-name "*~"`
.fi
to avoid error messages from
.I rm

View File

@ -44,12 +44,10 @@ recommendation X.121.
.PP
.RS
.nf
.ta 4n 18n 32n
struct sockaddr_x25 {
sa_family_t sx25_family; /* must be AF_X25 */
x25_address sx25_addr; /* X.121 Address */
sa_family_t sx25_family; /* must be AF_X25 */
x25_address sx25_addr; /* X.121 Address */
};
.ta
.fi
.RE
.PP