Correct use of .Nm, .Em, .Ev

Add rcsid. Use errx instead of fprintf + exit.
Various spelling fixes.
This commit is contained in:
Philippe Charnier 1999-12-05 19:57:14 +00:00
parent 6ec34d218a
commit 81c8c7a454
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=54158
6 changed files with 120 additions and 127 deletions

View File

@ -26,6 +26,11 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef lint
static const char rcsid[] =
"$FreeBSD$";
#endif /* not lint */
#define _USE_BSD 1
/* System Headers */
@ -36,6 +41,7 @@
#include <sys/param.h>
#include <ctype.h>
#include <dirent.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
#include <pwd.h>
@ -92,7 +98,6 @@ enum { ATQ, ATRM, AT, BATCH, CAT }; /* what program we want to run */
/* File scope variables */
static const char rcsid[] = "$FreeBSD$";
char *no_export[] =
{
"TERM", "TERMCAP", "DISPLAY", "_"
@ -103,7 +108,6 @@ static int send_mail = 0;
extern char **environ;
int fcreated;
char *namep;
char atfile[] = ATJOB_DIR "12345678901234";
char *atinput = (char*)0; /* where to get input from */
@ -138,7 +142,7 @@ static void alarmc(int signo)
{
/* Time out after some seconds
*/
panic("File locking timed out");
panic("file locking timed out");
}
/* Local functions */
@ -157,13 +161,13 @@ static char *cwdname(void)
while (1)
{
if (ptr == NULL)
panic("Out of memory");
panic("out of memory");
if (getcwd(ptr, size-1) != NULL)
return ptr;
if (errno != ERANGE)
perr("Cannot get directory");
perr("cannot get directory");
free (ptr);
size += SIZE;
@ -237,7 +241,7 @@ writefile(time_t runtimer, char queue)
PRIV_START
if ((lockdes = open(LFILE, O_WRONLY | O_CREAT, S_IWUSR | S_IRUSR)) < 0)
perr("Cannot open lockfile " LFILE);
perr("cannot open lockfile " LFILE);
lock.l_type = F_WRLCK; lock.l_whence = SEEK_SET; lock.l_start = 0;
lock.l_len = 0;
@ -255,7 +259,7 @@ writefile(time_t runtimer, char queue)
alarm(0);
if ((jobno = nextjob()) == EOF)
perr("Cannot generate job number");
perr("cannot generate job number");
sprintf(ppos, "%c%5lx%8lx", queue,
jobno, (unsigned long) (runtimer/60));
@ -266,7 +270,7 @@ writefile(time_t runtimer, char queue)
if (stat(atfile, &statbuf) != 0)
if (errno != ENOENT)
perr("Cannot access " ATJOB_DIR);
perr("cannot access " ATJOB_DIR);
/* Create the file. The x bit is only going to be set after it has
* been completely written out, to make sure it is not executed in the
@ -275,13 +279,13 @@ writefile(time_t runtimer, char queue)
*/
cmask = umask(S_IRUSR | S_IWUSR | S_IXUSR);
if ((fdes = creat(atfile, O_WRONLY)) == -1)
perr("Cannot create atjob file");
perr("cannot create atjob file");
if ((fd2 = dup(fdes)) <0)
perr("Error in dup() of job file");
perr("error in dup() of job file");
if(fchown(fd2, real_uid, real_gid) != 0)
perr("Cannot give away file");
perr("cannot give away file");
PRIV_END
@ -304,7 +308,7 @@ writefile(time_t runtimer, char queue)
close(lockdes);
if((fp = fdopen(fdes, "w")) == NULL)
panic("Cannot reopen atjob file");
panic("cannot reopen atjob file");
/* Get the userid to mail to, first by trying getlogin(), which reads
* /etc/utmp, then from LOGNAME, finally from getpwuid().
@ -325,7 +329,7 @@ writefile(time_t runtimer, char queue)
{
fpin = freopen(atinput, "r", stdin);
if (fpin == NULL)
perr("Cannot open input file");
perr("cannot open input file");
}
fprintf(fp, "#!/bin/sh\n# atrun uid=%ld gid=%ld\n# mail %*s %d\n",
(long) real_uid, (long) real_gid, LOGNAMESIZE, mailname, send_mail);
@ -336,7 +340,7 @@ writefile(time_t runtimer, char queue)
/* Write out the environment. Anything that may look like a
* special character to the shell is quoted, except for \n, which is
* done with a pair of "'s. Dont't export the no_export list (such
* done with a pair of "'s. Don't export the no_export list (such
* as TERM or DISPLAY) because we don't want these.
*/
for (atenv= environ; *atenv != NULL; atenv++)
@ -416,10 +420,10 @@ writefile(time_t runtimer, char queue)
fprintf(fp, "\n");
if (ferror(fp))
panic("Output error");
panic("output error");
if (ferror(stdin))
panic("Input error");
panic("input error");
fclose(fp);
@ -427,7 +431,7 @@ writefile(time_t runtimer, char queue)
*/
if (fchmod(fd2, S_IRUSR | S_IWUSR | S_IXUSR) < 0)
perr("Cannot give away file");
perr("cannot give away file");
close(fd2);
fprintf(stderr, "Job %ld will be executed using /bin/sh\n", jobno);
@ -458,16 +462,16 @@ list_jobs()
PRIV_START
if (chdir(ATJOB_DIR) != 0)
perr("Cannot change to " ATJOB_DIR);
perr("cannot change to " ATJOB_DIR);
if ((spool = opendir(".")) == NULL)
perr("Cannot open " ATJOB_DIR);
perr("cannot open " ATJOB_DIR);
/* Loop over every file in the directory
*/
while((dirent = readdir(spool)) != NULL) {
if (stat(dirent->d_name, &buf) != 0)
perr("Cannot stat in " ATJOB_DIR);
perr("cannot stat in " ATJOB_DIR);
/* See it's a regular file and has its x bit turned on and
* is the user's
@ -518,10 +522,10 @@ process_jobs(int argc, char **argv, int what)
PRIV_START
if (chdir(ATJOB_DIR) != 0)
perr("Cannot change to " ATJOB_DIR);
perr("cannot change to " ATJOB_DIR);
if ((spool = opendir(".")) == NULL)
perr("Cannot open " ATJOB_DIR);
perr("cannot open " ATJOB_DIR);
PRIV_END
@ -531,7 +535,7 @@ process_jobs(int argc, char **argv, int what)
PRIV_START
if (stat(dirent->d_name, &buf) != 0)
perr("Cannot stat in " ATJOB_DIR);
perr("cannot stat in " ATJOB_DIR);
PRIV_END
if(sscanf(dirent->d_name, "%c%5lx%8lx", &queue, &jobno, &ctm)!=3)
@ -539,10 +543,8 @@ process_jobs(int argc, char **argv, int what)
for (i=optind; i < argc; i++) {
if (atoi(argv[i]) == jobno) {
if ((buf.st_uid != real_uid) && !(real_uid == 0)) {
fprintf(stderr, "%s: Not owner\n", argv[i]);
exit(EXIT_FAILURE);
}
if ((buf.st_uid != real_uid) && !(real_uid == 0))
errx(EXIT_FAILURE, "%s: not owner", argv[i]);
switch (what) {
case ATRM:
@ -567,7 +569,7 @@ process_jobs(int argc, char **argv, int what)
PRIV_END
if (!fp) {
perr("Cannot open file");
perr("cannot open file");
}
while((ch = getc(fp)) != EOF) {
putchar(ch);
@ -576,10 +578,8 @@ process_jobs(int argc, char **argv, int what)
break;
default:
fprintf(stderr,
"Internal error, process_jobs = %d\n",what);
exit(EXIT_FAILURE);
break;
errx(EXIT_FAILURE, "internal error, process_jobs = %d",
what);
}
}
}
@ -593,10 +593,7 @@ mymalloc(size_t n)
{
void *p;
if ((p=malloc(n))==(void *)0)
{
fprintf(stderr,"Virtual memory exhausted\n");
exit(EXIT_FAILURE);
}
errx(EXIT_FAILURE, "virtual memory exhausted");
return p;
}
@ -623,8 +620,6 @@ main(int argc, char **argv)
else
pgm++;
namep = pgm;
/* find out what this program is supposed to do
*/
if (strcmp(pgm, "atq") == 0) {
@ -715,10 +710,7 @@ main(int argc, char **argv)
/* select our program
*/
if(!check_permission())
{
fprintf(stderr, "You do not have permission to use %s.\n",namep);
exit(EXIT_FAILURE);
}
errx(EXIT_FAILURE, "you do not have permission to use this program");
switch (program) {
case ATQ:
@ -770,7 +762,7 @@ main(int argc, char **argv)
break;
default:
panic("Internal error");
panic("internal error");
break;
}
exit(EXIT_SUCCESS);

View File

@ -3,7 +3,7 @@
.Dt "AT" 1
.Os FreeBSD 2.1
.Sh NAME
.Nm at, batch, atq, atrm
.Nm at , batch , atq , atrm
.Nd queue, examine or delete jobs for later execution
.Sh SYNOPSIS
.Nm at
@ -12,7 +12,6 @@
.Op Fl f Ar file
.Op Fl mldbv
.Ar time
.Pp
.Nm at
.Op Fl V
.Fl c Ar job Op Ar job ...
@ -64,15 +63,15 @@ or
to run a job at a specific time of day.
(If that time is already past, the next day is assumed.)
You may also specify
.Nm midnight ,
.Nm noon ,
.Em midnight ,
.Em noon ,
or
.Nm teatime
.Em teatime
(4pm)
and you can have a time-of-day suffixed with
.Nm AM
.Em AM
or
.Nm PM
.Em PM
for running in the morning or the evening.
You can also say what day the job will be run,
by giving a date in the form
@ -88,22 +87,22 @@ or
The specification of a date must follow the specification of
the time of day.
You can also give times like
.Op Nm now
.Nm + Ar count \%time-units ,
.Op Em now
.Em + Ar count \%time-units ,
where the time-units can be
.Nm minutes ,
.Nm hours ,
.Nm days ,
.Nm weeks ,
.Nm months
.Em minutes ,
.Em hours ,
.Em days ,
.Em weeks ,
.Em months
or
.Nm years
.Em years
and you can tell
.Nm at
.Nm
to run the job today by suffixing the time with
.Nm today
.Em today
and to run the job tomorrow by suffixing the time with
.Nm tomorrow.
.Em tomorrow .
.Pp
For example, to run a job at 4pm three days from now, you would do
.Nm at 4pm + 3 days ,
@ -113,7 +112,7 @@ and to run a job at 1am tomorrow, you would do
.Nm at 1am tomorrow.
.Pp
For both
.Nm at
.Nm
and
.Nm batch ,
commands are read from standard input or the file specified
@ -121,16 +120,16 @@ with the
.Fl f
option and executed.
The working directory, the environment (except for the variables
.Nm TERM ,
.Nm TERMCAP ,
.Nm DISPLAY
.Ev TERM ,
.Ev TERMCAP ,
.Ev DISPLAY
and
.Nm _ )
.Em _ )
and the
.Ar umask
are retained from the time of invocation.
An
.Nm at
.Nm
or
.Nm batch
command invoked from a
@ -140,7 +139,7 @@ The user will be mailed standard error and standard output from his
commands, if any. Mail will be sent using the command
.Xr sendmail 8 .
If
.Nm at
.Nm
is executed from a
.Xr su 1
shell, the owner of the login shell will receive the mail.
@ -154,7 +153,7 @@ and
If the file
.Pa _PERM_PATH/at.allow
exists, only usernames mentioned in it are allowed to use
.Nm at .
.Nm Ns .
.Pp
If
.Pa _PERM_PATH/at.allow
@ -162,10 +161,10 @@ does not exist,
.Pa _PERM_PATH/at.deny
is checked, every username not mentioned in it is then allowed
to use
.Nm at .
.Nm Ns .
.Pp
If neither exists, only the superuser is allowed use of
.Nm at .
.Nm Ns .
This is the default configuration.
.Pp
An empty
@ -174,24 +173,24 @@ means that every user is allowed use these commands.
.Sh OPTIONS
.Bl -tag -width indent
.It Fl V
prints the version number to standard error.
Print the version number to standard error.
.It Fl q Ar queue
uses the specified queue.
Use the specified queue.
A queue designation consists of a single letter; valid queue designations
range from
.Nm a
.Ar a
to
.Nm z .
.Ar z .
and
.Nm A
.Ar A
to
.Nm Z .
.Ar Z .
The
.Nm _DEFAULT_AT_QUEUE
.Ar _DEFAULT_AT_QUEUE
queue is the default for
.Nm at
.Nm
and the
.Nm _DEFAULT_BATCH_QUEUE
.Ar _DEFAULT_BATCH_QUEUE
queue for
.Nm batch .
Queues with higher letters run with increased niceness.
@ -204,39 +203,39 @@ is given a specific queue, it will only show jobs pending in that queue.
Send mail to the user when the job has completed even if there was no
output.
.It Fl f Ar file
Reads the job from
Read the job from
.Ar file
rather than standard input.
.It Fl l
Is an alias for
.Nm atq.
.Nm atq .
.It Fl d
Is an alias for
.Nm atrm.
.Nm atrm .
.It Fl b
Is an alias for
.Nm batch.
.Nm batch .
.It Fl v
For
.Nm atq ,
shows completed but not yet deleted jobs in the queue; otherwise
shows the time the job will be executed.
.It Fl c
Cats the jobs listed on the command line to standard output.
Cat the jobs listed on the command line to standard output.
.Sh FILES
.Bl -tag -width _ATJOB_DIR/_LOCKFILE -compact
.It Pa _ATJOB_DIR
Directory containing job files
directory containing job files
.It Pa _ATSPOOL_DIR
Directory containing output spool files
directory containing output spool files
.It Pa /var/run/utmp
Login records
login records
.It Pa _PERM_PATH/at.allow
Allow permission control
allow permission control
.It Pa _PERM_PATH/at.deny
Deny permission control
deny permission control
.It Pa _ATJOB_DIR/_LOCKFILE
Job-creation lock file.
job-creation lock file
.El
.Sh SEE ALSO
.Xr nice 1 ,
@ -246,15 +245,14 @@ Job-creation lock file.
.Xr cron 8 ,
.Xr sendmail 8
.Sh BUGS
.Pp
If the file
.Pa /var/run/utmp
is not available or corrupted, or if the user is not logged on at the
time
.Nm at
.Nm
is invoked, the mail is sent to the userid found
in the environment variable
.Nm LOGNAME .
.Ev LOGNAME .
If that is undefined or empty, the current userid is assumed.
.Pp
.Nm At
@ -264,7 +262,7 @@ as presently implemented are not suitable when users are competing for
resources.
If this is the case for your site, you might want to consider another
batch system, such as
.Nm nqs .
.Em nqs .
.Sh AUTHORS
At was mostly written by
.An Thomas Koenig Aq ig25@rz.uni-karlsruhe.de .

View File

@ -23,8 +23,14 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef lint
static const char rcsid[] =
"$FreeBSD$";
#endif /* not lint */
/* System Headers */
#include <err.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
@ -35,11 +41,6 @@
#include "panic.h"
#include "at.h"
/* File scope variables */
static const char rcsid[] =
"$FreeBSD$";
/* External variables */
/* Global functions */
@ -49,11 +50,10 @@ panic(char *a)
{
/* Something fatal has happened, print error message and exit.
*/
fprintf(stderr,"%s: %s\n",namep,a);
if (fcreated)
unlink(atfile);
exit (EXIT_FAILURE);
errx(EXIT_FAILURE, "%s", a);
}
void
@ -61,11 +61,13 @@ perr(char *a)
{
/* Some operating system error; print error message and exit.
*/
perror(a);
int serrno = errno;
if (fcreated)
unlink(atfile);
exit(EXIT_FAILURE);
errno = serrno;
err(EXIT_FAILURE, "%s", a);
}
void

View File

@ -2,7 +2,7 @@
* parsetime.c - parse time for at(1)
* Copyright (C) 1993, 1994 Thomas Koenig
*
* modifications for english-language times
* modifications for English-language times
* Copyright (C) 1993 David Parsons
*
* Redistribution and use in source and binary forms, with or without
@ -33,10 +33,15 @@
* \PLUS NUMBER MINUTES|HOURS|DAYS|WEEKS/
*/
#ifndef lint
static const char rcsid[] =
"$FreeBSD$";
#endif /* not lint */
/* System Headers */
#include <sys/types.h>
#include <ctype.h>
#include <err.h>
#include <errno.h>
#include <stdio.h>
@ -44,7 +49,6 @@
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <ctype.h>
#ifndef __FreeBSD__
#include <getopt.h>
#endif
@ -143,13 +147,10 @@ static char *sct; /* scanner - next char pointer in current argument */
static int need; /* scanner - need to advance to next argument */
static char *sc_token; /* scanner - token buffer */
static size_t sc_len; /* scanner - lenght of token buffer */
static size_t sc_len; /* scanner - length of token buffer */
static int sc_tokid; /* scanner - token id */
static int sc_tokplur; /* scanner - is token plural? */
static const char rcsid[] =
"$FreeBSD$";
/* Local functions */
/*
@ -516,7 +517,7 @@ month(struct tm *tm)
token();
}
/* flip months and days for european timing
/* flip months and days for European timing
*/
if (sep == DOT) {
int x = mday;
@ -605,7 +606,7 @@ parsetime(int argc, char **argv)
runtime.tm_hour = hr;
runtime.tm_min = 0;
token();
/* fall through to month setting */
/* FALLTHROUGH to month setting */
default:
month(&runtime);
break;
@ -625,7 +626,7 @@ parsetime(int argc, char **argv)
panic("garbled time");
if (nowtimer > runtimer)
panic("Trying to travel back in time");
panic("trying to travel back in time");
return runtimer;
} /* parsetime */

View File

@ -23,9 +23,15 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef lint
static const char rcsid[] =
"$FreeBSD$";
#endif /* not lint */
/* System Headers */
#include <sys/types.h>
#include <err.h>
#include <errno.h>
#include <pwd.h>
#include <stddef.h>
@ -45,11 +51,6 @@
/* Structures and unions */
/* File scope variables */
static const char rcsid[] = "$FreeBSD$";
/* Function declarations */
static int check_for_user(FILE *fp,const char *name);
@ -89,10 +90,7 @@ int check_permission()
return 1;
if ((pentry = getpwuid(uid)) == NULL)
{
perror("Cannot access user database");
exit(EXIT_FAILURE);
}
err(EXIT_FAILURE, "cannot access user database");
PRIV_START
@ -118,9 +116,9 @@ int check_permission()
return !check_for_user(fp, pentry->pw_name);
}
else if (errno != ENOENT)
perror("at.deny");
warn("at.deny");
}
else
perror("at.allow");
warn("at.allow");
return 0;
}

View File

@ -21,6 +21,8 @@
* THEORY OF LIABILITY, WETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _PRIVS_H
@ -37,7 +39,7 @@
/* Relinquish privileges temporarily for a setuid or setgid program
* with the option of getting them back later. This is done by swapping
* the real and effective userid BSD style. Call RELINQUISH_PRIVS once
* at the beginning of the main program. This will cause all operatons
* at the beginning of the main program. This will cause all operations
* to be executed with the real userid. When you need the privileges
* of the setuid/setgid invocation, call PRIV_START; when you no longer
* need it, call PRIV_END. Note that it is an error to call PRIV_START
@ -59,7 +61,7 @@
* It is NOT safe to call exec(), system() or popen() with a user-
* supplied program (i.e. without carefully checking PATH and any
* library load paths) with relinquished privileges; the called program
* can aquire them just as easily. Set both effective and real userid
* can acquire them just as easily. Set both effective and real userid
* to the real userid before calling any of them.
*/