SCCS-vsn: sbin/shutdown/shutdown.c 4.8
-static char *sccsid = "@(#)shutdown.c 4.7 (Berkeley) 81/05/11";
+static char *sccsid = "@(#)shutdown.c 4.8 (Berkeley) 81/06/11";
#include <stdio.h>
#include <ctype.h>
#include <stdio.h>
#include <ctype.h>
#define HOURS *3600
#define MINUTES *60
#define SECONDS
#define HOURS *3600
#define MINUTES *60
#define SECONDS
-#define NLOG 20 /* no of lines possible for message */
+#define NLOG 20 /* no of args possible for message */
#define NOLOGTIME 5 MINUTES
int do_nothing();
#define NOLOGTIME 5 MINUTES
int do_nothing();
10 MINUTES, 5 MINUTES,
5 MINUTES, 3 MINUTES,
2 MINUTES, 30 SECONDS,
10 MINUTES, 5 MINUTES,
5 MINUTES, 3 MINUTES,
2 MINUTES, 30 SECONDS,
+ 40 SECONDS, 10 SECONDS,
0 SECONDS, 0 SECONDS
};
char *shutter, *getlogin();
0 SECONDS, 0 SECONDS
};
char *shutter, *getlogin();
argc--, argv++;
}
if (argc < 1) {
argc--, argv++;
}
if (argc < 1) {
- printf("Usage: %s [ -krd ] shutdowntime [ message ]\n",
+ printf("Usage: %s [ -krh ] shutdowntime [ message ]\n",
signal(SIGTERM, finish);
signal(SIGALRM, do_nothing);
nice(-20);
signal(SIGTERM, finish);
signal(SIGALRM, do_nothing);
nice(-20);
#ifndef DEBUG
if (i = fork()) {
printf("[pid %d]\n", i);
#ifndef DEBUG
if (i = fork()) {
printf("[pid %d]\n", i);
long sdt, nowtime;
{
char *ts;
long sdt, nowtime;
{
char *ts;
+ register delay = std - nowtime;
- fprintf(term, "\007\007*** System shutdown message from %s ***\n", shutter);
+ if (delay > 8)
+ while (delay % 5)
+ delay++;
+
+ if (shutter)
+ fprintf(term,
+ "\007\007*** System shutdown message from %s ***\n",
+ shutter);
+ else
+ fprintf(term,
+ "\007\007*** System shutdown message ***\n");
- if (sdt - nowtime > 10 MINUTES)
fprintf(term, "System going down at %5.5s\n", ts+11);
fprintf(term, "System going down at %5.5s\n", ts+11);
- else if ( sdt - nowtime > 60 SECONDS ) {
+ else if ( delay > 60 SECONDS ) {
fprintf(term, "System going down in %d minute%s\n",
fprintf(term, "System going down in %d minute%s\n",
- (sdt-nowtime+30)/60, (sdt-nowtime+30)/60 != 1 ? "s" : "");
- } else if ( sdt - nowtime > 0 ) {
+ (delay+30)/60, (delay+30)/60 != 1 ? "s" : "");
+ } else if ( delay > 0 ) {
fprintf(term, "System going down in %d second%s\n",
fprintf(term, "System going down in %d second%s\n",
- sdt-nowtime, sdt-nowtime != 1 ? "s" : "");
+ delay, delay != 1 ? "s" : "");
} else
fprintf(term, "System going down IMMEDIATELY\n");
}
} else
fprintf(term, "System going down IMMEDIATELY\n");
}
if ((nologf = fopen(nologin, "w")) != NULL) {
fprintf(nologf, nolog1, (ctime(&sdt)) + 11);
if ((nologf = fopen(nologin, "w")) != NULL) {
fprintf(nologf, nolog1, (ctime(&sdt)) + 11);
for (mess = nolog2; *mess; mess++)
for (mess = nolog2; *mess; mess++)
- fprintf(nologf, "\t%s\n", *mess);
+ fprintf(nologf, " %s", *mess);
+ putc('\n', nologf);
tm->tm_mday, tm->tm_year + 1900);
for (mess = nolog2; *mess; mess++)
fprintf(fp, " %s", *mess);
tm->tm_mday, tm->tm_year + 1900);
for (mess = nolog2; *mess; mess++)
fprintf(fp, " %s", *mess);
+ if (shutter)
+ fprintf(fp, " (by %s)", shutter);
fputc('\n', fp);
fclose(fp);
}
fputc('\n', fp);
fclose(fp);
}