zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

launch.h (15709B) - Raw


      1 #ifndef __XPC_LAUNCH_H__
      2 #define __XPC_LAUNCH_H__
      3 
      4 /*!
      5  * @header
      6  * These interfaces were only ever documented for the purpose of allowing a
      7  * launchd job to obtain file descriptors associated with the sockets it
      8  * advertised in its launchd.plist(5). That functionality is now available in a
      9  * much more straightforward fashion through the {@link launch_activate_socket}
     10  * API.
     11  *
     12  * There are currently no replacements for other uses of the {@link launch_msg}
     13  * API, including submitting, removing, starting, stopping and listing jobs.
     14  */
     15 
     16 #include <os/base.h>
     17 #include <Availability.h>
     18 
     19 #include <mach/mach.h>
     20 #include <stddef.h>
     21 #include <stdbool.h>
     22 #include <sys/cdefs.h>
     23 
     24 #if __has_feature(assume_nonnull)
     25 _Pragma("clang assume_nonnull begin")
     26 #endif
     27 __BEGIN_DECLS
     28 
     29 #define LAUNCH_KEY_SUBMITJOB "SubmitJob"
     30 #define LAUNCH_KEY_REMOVEJOB "RemoveJob"
     31 #define LAUNCH_KEY_STARTJOB "StartJob"
     32 #define LAUNCH_KEY_STOPJOB "StopJob"
     33 #define LAUNCH_KEY_GETJOB "GetJob"
     34 #define LAUNCH_KEY_GETJOBS "GetJobs"
     35 #define LAUNCH_KEY_CHECKIN "CheckIn"
     36 
     37 #define LAUNCH_JOBKEY_LABEL "Label"
     38 #define LAUNCH_JOBKEY_DISABLED "Disabled"
     39 #define LAUNCH_JOBKEY_USERNAME "UserName"
     40 #define LAUNCH_JOBKEY_GROUPNAME "GroupName"
     41 #define LAUNCH_JOBKEY_TIMEOUT "TimeOut"
     42 #define LAUNCH_JOBKEY_EXITTIMEOUT "ExitTimeOut"
     43 #define LAUNCH_JOBKEY_INITGROUPS "InitGroups"
     44 #define LAUNCH_JOBKEY_SOCKETS "Sockets"
     45 #define LAUNCH_JOBKEY_MACHSERVICES "MachServices"
     46 #define LAUNCH_JOBKEY_MACHSERVICELOOKUPPOLICIES "MachServiceLookupPolicies"
     47 #define LAUNCH_JOBKEY_INETDCOMPATIBILITY "inetdCompatibility"
     48 #define LAUNCH_JOBKEY_ENABLEGLOBBING "EnableGlobbing"
     49 #define LAUNCH_JOBKEY_PROGRAMARGUMENTS "ProgramArguments"
     50 #define LAUNCH_JOBKEY_PROGRAM "Program"
     51 #define LAUNCH_JOBKEY_ONDEMAND "OnDemand"
     52 #define LAUNCH_JOBKEY_KEEPALIVE "KeepAlive"
     53 #define LAUNCH_JOBKEY_LIMITLOADTOHOSTS "LimitLoadToHosts"
     54 #define LAUNCH_JOBKEY_LIMITLOADFROMHOSTS "LimitLoadFromHosts"
     55 #define LAUNCH_JOBKEY_LIMITLOADTOSESSIONTYPE "LimitLoadToSessionType"
     56 #define LAUNCH_JOBKEY_LIMITLOADTOHARDWARE "LimitLoadToHardware"
     57 #define LAUNCH_JOBKEY_LIMITLOADFROMHARDWARE "LimitLoadFromHardware"
     58 #define LAUNCH_JOBKEY_RUNATLOAD "RunAtLoad"
     59 #define LAUNCH_JOBKEY_ROOTDIRECTORY "RootDirectory"
     60 #define LAUNCH_JOBKEY_WORKINGDIRECTORY "WorkingDirectory"
     61 #define LAUNCH_JOBKEY_ENVIRONMENTVARIABLES "EnvironmentVariables"
     62 #define LAUNCH_JOBKEY_USERENVIRONMENTVARIABLES "UserEnvironmentVariables"
     63 #define LAUNCH_JOBKEY_UMASK "Umask"
     64 #define LAUNCH_JOBKEY_NICE "Nice"
     65 #define LAUNCH_JOBKEY_HOPEFULLYEXITSFIRST "HopefullyExitsFirst"
     66 #define LAUNCH_JOBKEY_HOPEFULLYEXITSLAST "HopefullyExitsLast"
     67 #define LAUNCH_JOBKEY_LOWPRIORITYIO "LowPriorityIO"
     68 #define LAUNCH_JOBKEY_LOWPRIORITYBACKGROUNDIO "LowPriorityBackgroundIO"
     69 #define LAUNCH_JOBKEY_MATERIALIZEDATALESSFILES "MaterializeDatalessFiles"
     70 #define LAUNCH_JOBKEY_SESSIONCREATE "SessionCreate"
     71 #define LAUNCH_JOBKEY_STARTONMOUNT "StartOnMount"
     72 #define LAUNCH_JOBKEY_SOFTRESOURCELIMITS "SoftResourceLimits"
     73 #define LAUNCH_JOBKEY_HARDRESOURCELIMITS "HardResourceLimits"
     74 #define LAUNCH_JOBKEY_STANDARDINPATH "StandardInPath"
     75 #define LAUNCH_JOBKEY_STANDARDOUTPATH "StandardOutPath"
     76 #define LAUNCH_JOBKEY_STANDARDERRORPATH "StandardErrorPath"
     77 #define LAUNCH_JOBKEY_DEBUG "Debug"
     78 #define LAUNCH_JOBKEY_WAITFORDEBUGGER "WaitForDebugger"
     79 #define LAUNCH_JOBKEY_QUEUEDIRECTORIES "QueueDirectories"
     80 #define LAUNCH_JOBKEY_WATCHPATHS "WatchPaths"
     81 #define LAUNCH_JOBKEY_STARTINTERVAL "StartInterval"
     82 #define LAUNCH_JOBKEY_STARTCALENDARINTERVAL "StartCalendarInterval"
     83 #define LAUNCH_JOBKEY_BONJOURFDS "BonjourFDs"
     84 #define LAUNCH_JOBKEY_LASTEXITSTATUS "LastExitStatus"
     85 #define LAUNCH_JOBKEY_PID "PID"
     86 #define LAUNCH_JOBKEY_THROTTLEINTERVAL "ThrottleInterval"
     87 #define LAUNCH_JOBKEY_LAUNCHONLYONCE "LaunchOnlyOnce"
     88 #define LAUNCH_JOBKEY_ABANDONPROCESSGROUP "AbandonProcessGroup"
     89 #define LAUNCH_JOBKEY_IGNOREPROCESSGROUPATSHUTDOWN \
     90 	"IgnoreProcessGroupAtShutdown"
     91 #define LAUNCH_JOBKEY_LEGACYTIMERS "LegacyTimers"
     92 #define LAUNCH_JOBKEY_ENABLEPRESSUREDEXIT "EnablePressuredExit"
     93 #define LAUNCH_JOBKEY_ENABLETRANSACTIONS "EnableTransactions"
     94 #define LAUNCH_JOBKEY_DRAINMESSAGESONFAILEDINIT "DrainMessagesOnFailedInit"
     95 #define LAUNCH_JOBKEY_POLICIES "Policies"
     96 #define LAUNCH_JOBKEY_BUNDLEPROGRAM "BundleProgram"
     97 #define LAUNCH_JOBKEY_ASSOCIATEDBUNDLEIDENTIFIERS "AssociatedBundleIdentifiers"
     98 #define LAUNCH_JOBKEY_SPAWNCONSTRAINT "SpawnConstraint"
     99 
    100 #define LAUNCH_JOBKEY_PUBLISHESEVENTS "PublishesEvents"
    101 #define LAUNCH_KEY_PUBLISHESEVENTS_DOMAININTERNAL "DomainInternal"
    102 
    103 #define LAUNCH_JOBPOLICY_DENYCREATINGOTHERJOBS "DenyCreatingOtherJobs"
    104 
    105 #define LAUNCH_JOBINETDCOMPATIBILITY_WAIT "Wait"
    106 #define LAUNCH_JOBINETDCOMPATIBILITY_INSTANCES "Instances"
    107 
    108 #define LAUNCH_JOBKEY_MACH_RESETATCLOSE "ResetAtClose"
    109 #define LAUNCH_JOBKEY_MACH_HIDEUNTILCHECKIN "HideUntilCheckIn"
    110 
    111 #define LAUNCH_JOBKEY_KEEPALIVE_SUCCESSFULEXIT "SuccessfulExit"
    112 #define LAUNCH_JOBKEY_KEEPALIVE_NETWORKSTATE "NetworkState"
    113 #define LAUNCH_JOBKEY_KEEPALIVE_PATHSTATE "PathState"
    114 #define LAUNCH_JOBKEY_KEEPALIVE_OTHERJOBACTIVE "OtherJobActive"
    115 #define LAUNCH_JOBKEY_KEEPALIVE_OTHERJOBENABLED "OtherJobEnabled"
    116 #define LAUNCH_JOBKEY_KEEPALIVE_AFTERINITIALDEMAND	"AfterInitialDemand"
    117 #define LAUNCH_JOBKEY_KEEPALIVE_CRASHED "Crashed"
    118 
    119 #define LAUNCH_JOBKEY_LAUNCHEVENTS "LaunchEvents"
    120 
    121 #define LAUNCH_JOBKEY_CAL_MINUTE "Minute"
    122 #define LAUNCH_JOBKEY_CAL_HOUR "Hour"
    123 #define LAUNCH_JOBKEY_CAL_DAY "Day"
    124 #define LAUNCH_JOBKEY_CAL_WEEKDAY "Weekday"
    125 #define LAUNCH_JOBKEY_CAL_MONTH "Month"
    126 
    127 #define LAUNCH_JOBKEY_RESOURCELIMIT_CORE "Core"
    128 #define LAUNCH_JOBKEY_RESOURCELIMIT_CPU "CPU"
    129 #define LAUNCH_JOBKEY_RESOURCELIMIT_DATA "Data"
    130 #define LAUNCH_JOBKEY_RESOURCELIMIT_FSIZE "FileSize"
    131 #define LAUNCH_JOBKEY_RESOURCELIMIT_MEMLOCK "MemoryLock"
    132 #define LAUNCH_JOBKEY_RESOURCELIMIT_NOFILE "NumberOfFiles"
    133 #define LAUNCH_JOBKEY_RESOURCELIMIT_NPROC "NumberOfProcesses"
    134 #define LAUNCH_JOBKEY_RESOURCELIMIT_RSS "ResidentSetSize"
    135 #define LAUNCH_JOBKEY_RESOURCELIMIT_STACK "Stack"
    136 
    137 #define LAUNCH_JOBKEY_DISABLED_MACHINETYPE "MachineType"
    138 #define LAUNCH_JOBKEY_DISABLED_MODELNAME "ModelName"
    139 
    140 #define LAUNCH_JOBKEY_DATASTORES "Datastores"
    141 #define LAUNCH_JOBKEY_DATASTORES_SIZELIMIT "SizeLimit"
    142 
    143 #define LAUNCH_JOBSOCKETKEY_TYPE "SockType"
    144 #define LAUNCH_JOBSOCKETKEY_PASSIVE "SockPassive"
    145 #define LAUNCH_JOBSOCKETKEY_BONJOUR "Bonjour"
    146 #define LAUNCH_JOBSOCKETKEY_SECUREWITHKEY "SecureSocketWithKey"
    147 #define LAUNCH_JOBSOCKETKEY_PATHNAME "SockPathName"
    148 #define LAUNCH_JOBSOCKETKEY_PATHMODE "SockPathMode"
    149 #define LAUNCH_JOBSOCKETKEY_PATHOWNER "SockPathOwner"
    150 #define LAUNCH_JOBSOCKETKEY_PATHGROUP "SockPathGroup"
    151 #define LAUNCH_JOBSOCKETKEY_NODENAME "SockNodeName"
    152 #define LAUNCH_JOBSOCKETKEY_SERVICENAME "SockServiceName"
    153 #define LAUNCH_JOBSOCKETKEY_FAMILY "SockFamily"
    154 #define LAUNCH_JOBSOCKETKEY_PROTOCOL "SockProtocol"
    155 #define LAUNCH_JOBSOCKETKEY_MULTICASTGROUP "MulticastGroup"
    156 
    157 #define LAUNCH_JOBKEY_PROCESSTYPE "ProcessType"
    158 #define LAUNCH_KEY_PROCESSTYPE_APP "App"
    159 #define LAUNCH_KEY_PROCESSTYPE_STANDARD "Standard"
    160 #define LAUNCH_KEY_PROCESSTYPE_BACKGROUND "Background"
    161 #define LAUNCH_KEY_PROCESSTYPE_INTERACTIVE "Interactive"
    162 #define LAUNCH_KEY_PROCESSTYPE_ADAPTIVE "Adaptive"
    163 
    164 /*!
    165  * @function launch_activate_socket
    166  *
    167  * @abstract
    168  * Retrieves the file descriptors for sockets specified in the process'
    169  * launchd.plist(5).
    170  *
    171  * @param name
    172  * The name of the socket entry in the service's Sockets dictionary.
    173  *
    174  * @param fds
    175  * On return, this parameter will be populated with an array of file
    176  * descriptors. One socket can have many descriptors associated with it
    177  * depending on the characteristics of the network interfaces on the system.
    178  * The descriptors in this array are the results of calling getaddrinfo(3) with
    179  * the parameters described in launchd.plist(5).
    180  *
    181  * The caller is responsible for calling free(3) on the returned pointer.
    182  *
    183  * @param cnt
    184  * The number of file descriptor entries in the returned array.
    185  *
    186  * @result
    187  * On success, zero is returned. Otherwise, an appropriate POSIX-domain is
    188  * returned. Possible error codes are:
    189  *
    190  * ENOENT -> There was no socket of the specified name owned by the caller.
    191  * ESRCH -> The caller is not a process managed by launchd.
    192  * EALREADY -> The socket has already been activated by the caller.
    193  */
    194 __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0)
    195 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL2 OS_NONNULL3
    196 int
    197 launch_activate_socket(const char *name,
    198 	int * _Nonnull * _Nullable fds, size_t *cnt);
    199 
    200 typedef struct _launch_data *launch_data_t;
    201 typedef void (*launch_data_dict_iterator_t)(const launch_data_t lval,
    202 	const char *key, void * _Nullable ctx);
    203 
    204 typedef enum {
    205 	LAUNCH_DATA_DICTIONARY = 1,
    206 	LAUNCH_DATA_ARRAY,
    207 	LAUNCH_DATA_FD,
    208 	LAUNCH_DATA_INTEGER,
    209 	LAUNCH_DATA_REAL,
    210 	LAUNCH_DATA_BOOL,
    211 	LAUNCH_DATA_STRING,
    212 	LAUNCH_DATA_OPAQUE,
    213 	LAUNCH_DATA_ERRNO,
    214 	LAUNCH_DATA_MACHPORT,
    215 } launch_data_type_t;
    216 
    217 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    218 OS_EXPORT OS_MALLOC OS_WARN_RESULT
    219 launch_data_t
    220 launch_data_alloc(launch_data_type_t type);
    221 
    222 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    223 OS_EXPORT OS_MALLOC OS_WARN_RESULT OS_NONNULL1
    224 launch_data_t
    225 launch_data_copy(launch_data_t ld);
    226 
    227 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    228 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    229 launch_data_type_t
    230 launch_data_get_type(const launch_data_t ld);
    231 
    232 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    233 OS_EXPORT OS_NONNULL1
    234 void
    235 launch_data_free(launch_data_t ld);
    236 
    237 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    238 OS_EXPORT OS_NONNULL1 OS_NONNULL2 OS_NONNULL3
    239 bool
    240 launch_data_dict_insert(launch_data_t ldict, const launch_data_t lval,
    241 	const char *key);
    242 
    243 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    244 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL2
    245 launch_data_t _Nullable
    246 launch_data_dict_lookup(const launch_data_t ldict, const char *key);
    247 
    248 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    249 OS_EXPORT OS_NONNULL1 OS_NONNULL2
    250 bool
    251 launch_data_dict_remove(launch_data_t ldict, const char *key);
    252 
    253 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    254 OS_EXPORT OS_NONNULL1 OS_NONNULL2
    255 void
    256 launch_data_dict_iterate(const launch_data_t ldict,
    257 	launch_data_dict_iterator_t iterator, void * _Nullable ctx);
    258 
    259 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    260 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    261 size_t
    262 launch_data_dict_get_count(const launch_data_t ldict);
    263 
    264 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    265 OS_EXPORT OS_NONNULL1 OS_NONNULL2
    266 bool
    267 launch_data_array_set_index(launch_data_t larray, const launch_data_t lval,
    268 	size_t idx);
    269 
    270 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    271 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    272 launch_data_t
    273 launch_data_array_get_index(const launch_data_t larray, size_t idx);
    274 
    275 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    276 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    277 size_t
    278 launch_data_array_get_count(const launch_data_t larray);
    279 
    280 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    281 OS_EXPORT OS_MALLOC OS_WARN_RESULT
    282 launch_data_t
    283 launch_data_new_fd(int fd);
    284 
    285 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    286 OS_EXPORT OS_MALLOC OS_WARN_RESULT
    287 launch_data_t
    288 launch_data_new_machport(mach_port_t val);
    289 
    290 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    291 OS_EXPORT OS_MALLOC OS_WARN_RESULT
    292 launch_data_t
    293 launch_data_new_integer(long long val);
    294 
    295 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    296 OS_EXPORT OS_MALLOC OS_WARN_RESULT
    297 launch_data_t
    298 launch_data_new_bool(bool val);
    299 
    300 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    301 OS_EXPORT OS_MALLOC OS_WARN_RESULT
    302 launch_data_t
    303 launch_data_new_real(double val);
    304 
    305 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    306 OS_EXPORT OS_MALLOC OS_WARN_RESULT
    307 launch_data_t
    308 launch_data_new_string(const char *val);
    309 
    310 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    311 OS_EXPORT OS_MALLOC OS_WARN_RESULT
    312 launch_data_t
    313 launch_data_new_opaque(const void *bytes, size_t sz);
    314 
    315 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    316 OS_EXPORT OS_NONNULL1
    317 bool
    318 launch_data_set_fd(launch_data_t ld, int fd);
    319 
    320 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    321 OS_EXPORT OS_NONNULL1
    322 bool
    323 launch_data_set_machport(launch_data_t ld, mach_port_t mp);
    324 
    325 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    326 OS_EXPORT OS_NONNULL1
    327 bool
    328 launch_data_set_integer(launch_data_t ld, long long val);
    329 
    330 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    331 OS_EXPORT OS_NONNULL1
    332 bool
    333 launch_data_set_bool(launch_data_t ld, bool val);
    334 
    335 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    336 OS_EXPORT OS_NONNULL1
    337 bool
    338 launch_data_set_real(launch_data_t ld, double val);
    339 
    340 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    341 OS_EXPORT OS_NONNULL1
    342 bool
    343 launch_data_set_string(launch_data_t ld, const char *val);
    344 
    345 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    346 OS_EXPORT OS_NONNULL1
    347 bool
    348 launch_data_set_opaque(launch_data_t ld, const void *bytes, size_t sz);
    349 
    350 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    351 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    352 int
    353 launch_data_get_fd(const launch_data_t ld);
    354 
    355 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    356 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    357 mach_port_t
    358 launch_data_get_machport(const launch_data_t ld);
    359 
    360 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    361 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    362 long long
    363 launch_data_get_integer(const launch_data_t ld);
    364 
    365 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    366 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    367 bool
    368 launch_data_get_bool(const launch_data_t ld);
    369 
    370 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    371 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    372 double
    373 launch_data_get_real(const launch_data_t ld);
    374 
    375 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    376 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    377 const char *
    378 launch_data_get_string(const launch_data_t ld);
    379 
    380 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    381 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    382 void * _Nullable
    383 launch_data_get_opaque(const launch_data_t ld);
    384 
    385 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    386 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    387 size_t
    388 launch_data_get_opaque_size(const launch_data_t ld);
    389 
    390 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    391 OS_EXPORT OS_WARN_RESULT OS_NONNULL1
    392 int
    393 launch_data_get_errno(const launch_data_t ld);
    394 
    395 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    396 OS_EXPORT OS_WARN_RESULT
    397 int
    398 launch_get_fd(void);
    399 
    400 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)
    401 OS_EXPORT OS_MALLOC OS_WARN_RESULT OS_NONNULL1
    402 launch_data_t
    403 launch_msg(const launch_data_t request);
    404 
    405 __END_DECLS
    406 #if __has_feature(assume_nonnull)
    407 _Pragma("clang assume_nonnull end")
    408 #endif
    409 
    410 #endif // __XPC_LAUNCH_H__