3 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
4 // based on fakerunlevel.cc by Jacques Gelinas
6 // This program is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 2, or (at your option)
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 This program add a RUNLEVEL record in a utmp file.
22 This is used when a vserver lack a private init process
23 so runlevel properly report the fake runlevel.
37 fprintf (stderr,"fakerunlevel version %s\n",VERSION);
40 "fakerunlevel runlevel utmp_file\n"
42 "Put a runlevel record in file utmp_file\n");
45 int main (int argc, char *argv[])
50 int runlevel = atoi(argv[1]);
51 const char *fname = argv[2];
52 if (runlevel < 1 || runlevel > 5){
55 // Make sure the file exist
56 FILE *fout = fopen (fname,"a");
58 fprintf (stderr,"Can't open file %s (%s)\n",fname
66 memset (&ut,0,sizeof(ut));
68 ut.ut_pid = ('#' << 8) + runlevel+'0';