mirror of https://github.com/mkerrisk/man-pages
Replaced tabs with spaces
This commit is contained in:
parent
1bef0ec265
commit
7295b7eda0
4
Changes
4
Changes
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
25
man2/msgop.2
25
man2/msgop.2
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
24
man3/cmsg.3
24
man3/cmsg.3
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
16
man3/getpw.3
16
man3/getpw.3
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -93,7 +93,7 @@ and then read the byte of data at the mark:
|
|||
perror("sockatmark");
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (atmark)
|
||||
break;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ().
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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 :
|
||||
|
|
|
@ -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
|
||||
|
|
10
man5/hosts.5
10
man5/hosts.5
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
11
man7/arp.7
11
man7/arp.7
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
11
man7/ddp.7
11
man7/ddp.7
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue