Projects
Browse Source     Search     Timeline     Wiki

Changeset 23029

Show
Ignore:
Timestamp:
02/05/07 14:11:16 (22 months ago)
Author:
zarzycki@…
Message:

<rdar://problem/4976905> turn SystemStarter into a launchd job

Location:
trunk/launchd/src
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/launchd/src/Makefile.am

    r22979 r23029  
    9494        mkdir -p $(DESTDIR)/Library/LaunchDaemons 
    9595        mkdir -p $(DESTDIR)/Library/LaunchAgents 
     96        mkdir -p $(DESTDIR)/System/Library/LaunchAgents 
    9697        mkdir -p $(DESTDIR)/System/Library/LaunchDaemons 
    97         mkdir -p $(DESTDIR)/System/Library/LaunchAgents 
     98        cp $(srcdir)/com.apple.SystemStarter.plist $(DESTDIR)/System/Library/LaunchDaemons 
    9899 
    99100endif 
  • trunk/launchd/src/Makefile.in

    r22979 r23029  
    11081108@LIBS_ONLY_FALSE@       mkdir -p $(DESTDIR)/Library/LaunchDaemons 
    11091109@LIBS_ONLY_FALSE@       mkdir -p $(DESTDIR)/Library/LaunchAgents 
     1110@LIBS_ONLY_FALSE@       mkdir -p $(DESTDIR)/System/Library/LaunchAgents 
    11101111@LIBS_ONLY_FALSE@       mkdir -p $(DESTDIR)/System/Library/LaunchDaemons 
    1111 @LIBS_ONLY_FALSE@       mkdir -p $(DESTDIR)/System/Library/LaunchAgents 
     1112@LIBS_ONLY_FALSE@       cp $(srcdir)/com.apple.SystemStarter.plist $(DESTDIR)/System/Library/LaunchDaemons 
    11121113# Tell versions [3.59,3.63) of GNU make to not export all variables. 
    11131114# Otherwise a system limit (for SysV at least) may be exceeded. 
  • trunk/launchd/src/SystemStarter.c

    r22638 r23029  
    2323 **/ 
    2424 
     25#include <sys/types.h> 
     26#include <sys/stat.h> 
     27#include <paths.h> 
    2528#include <unistd.h> 
    2629#include <crt_externs.h> 
     
    148151        } 
    149152 
    150         exit(system_starter(anAction, aService)); 
     153        int ssec = system_starter(anAction, aService); 
     154        struct stat sb; 
     155 
     156        if (anAction == kActionStart && stat("/etc/rc.local", &sb) != -1) { 
     157                int wstatus; 
     158                pid_t rclp; 
     159 
     160                switch ((rclp = fork())) { 
     161                case -1: 
     162                        break; 
     163                case 0: 
     164                        execlp(_PATH_BSHELL, _PATH_BSHELL, "/etc/rc.local", NULL); 
     165                        _exit(EXIT_FAILURE); 
     166                        break; 
     167                default: 
     168                        waitpid(rclp, &wstatus, 0); 
     169                        break; 
     170                } 
     171        } 
     172 
     173        exit(ssec); 
    151174} 
    152175 
  • trunk/launchd/src/launchctl.c

    r23028 r23029  
    12751275        _vproc_set_global_on_demand(false); 
    12761276 
    1277         const char *SystemStarter_tool[] = { "SystemStarter", NULL }; 
    1278         assumes(fwexec(SystemStarter_tool, false) != -1); 
    1279  
    1280         if (path_check("/etc/rc.local")) { 
    1281                 const char *rc_local_tool[] = { _PATH_BSHELL, "/etc/rc.local", NULL }; 
    1282                 assumes(fwexec(rc_local_tool, true) != -1); 
    1283         } 
    1284  
    12851277        return 0; 
    12861278}