Changeset 23308
- Timestamp:
- 07/12/07 13:43:08 (17 months ago)
- Location:
- trunk/launchd/src
- Files:
-
- 2 modified
-
launchctl.c (modified) (5 diffs)
-
liblaunch_public.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/launchd/src/launchctl.c
r23304 r23308 20 20 21 21 static const char *const __rcs_file_version__ = "$Revision$"; 22 23 #include "liblaunch_public.h" 24 #include "liblaunch_private.h" 25 #include "libbootstrap_public.h" 26 #include "libvproc_public.h" 27 #include "libvproc_private.h" 28 #include "libvproc_internal.h" 22 29 23 30 #include <CoreFoundation/CoreFoundation.h> … … 66 73 #include <util.h> 67 74 68 #include "libbootstrap_public.h"69 #include "libvproc_public.h"70 #include "libvproc_private.h"71 #include "libvproc_internal.h"72 #include "liblaunch_public.h"73 #include "liblaunch_private.h"74 75 75 76 #define LAUNCH_SECDIR "/tmp/launch-XXXXXX" … … 144 145 static bool do_single_user_mode2(void); 145 146 static void read_launchd_conf(void); 147 static bool job_disabled_logic(launch_data_t obj); 146 148 147 149 typedef enum { … … 613 615 614 616 if ((tmpd = launch_data_dict_lookup(thejob, LAUNCH_JOBKEY_DISABLED))) { 615 job_disabled = launch_data_get_bool(tmpd);617 job_disabled = job_disabled_logic(tmpd); 616 618 } 617 619 … … 640 642 } 641 643 launch_data_free(thejob); 644 } 645 646 static bool 647 sysctl_hw_streq(int mib_slot, const char *str) 648 { 649 char buf[1000]; 650 size_t bufsz = sizeof(buf); 651 int mib[] = { CTL_HW, mib_slot }; 652 653 if (sysctl(mib, 2, buf, &bufsz, NULL, 0) != -1) { 654 if (strcmp(buf, str) == 0) { 655 return true; 656 } 657 } 658 659 return false; 660 } 661 662 static void 663 job_disabled_dict_logic(launch_data_t obj, const char *key, void *context) 664 { 665 bool *r = context; 666 667 if (launch_data_get_type(obj) != LAUNCH_DATA_STRING) { 668 return; 669 } 670 671 if (strcasecmp(key, LAUNCH_JOBKEY_DISABLED_MACHINETYPE) == 0) { 672 if (sysctl_hw_streq(HW_MACHINE, launch_data_get_string(obj))) { 673 *r = true; 674 } 675 } else if (strcasecmp(key, LAUNCH_JOBKEY_DISABLED_MODELNAME) == 0) { 676 if (sysctl_hw_streq(HW_MODEL, launch_data_get_string(obj))) { 677 *r = true; 678 } 679 } 680 } 681 682 bool 683 job_disabled_logic(launch_data_t obj) 684 { 685 bool r = false; 686 687 switch (launch_data_get_type(obj)) { 688 case LAUNCH_DATA_DICTIONARY: 689 launch_data_dict_iterate(obj, job_disabled_dict_logic, &r); 690 break; 691 case LAUNCH_DATA_BOOL: 692 r = launch_data_get_bool(obj); 693 break; 694 default: 695 break; 696 } 697 698 return r; 642 699 } 643 700 -
trunk/launchd/src/liblaunch_public.h
r23235 r23308 127 127 #define LAUNCH_JOBKEY_RESOURCELIMIT_STACK "Stack" 128 128 129 #define LAUNCH_JOBKEY_DISABLED_MACHINETYPE "MachineType" 130 #define LAUNCH_JOBKEY_DISABLED_MODELNAME "ModelName" 131 129 132 #define LAUNCH_JOBSOCKETKEY_TYPE "SockType" 130 133 #define LAUNCH_JOBSOCKETKEY_PASSIVE "SockPassive"

