mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-25 16:13:17 +00:00
Correct use of .Nm, .Em, .Ev
Add rcsid. Use errx instead of fprintf + exit. Various spelling fixes.
This commit is contained in:
parent
6ec34d218a
commit
81c8c7a454
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=54158
@ -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);
|
||||
|
@ -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 .
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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.
|
||||
*/
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user