#!/bin/sh # NetHack 3.6 macosx.sh $NHDT-Date: 1517231957 2018/01/29 13:19:17 $ $NHDT-Branch: githash $:$NHDT-Revision: 1.20 $ # Copyright (c) Kenneth Lorber, Kensington, Maryland, 2007. # NetHack may be freely redistributed. See license for details. # # hints helper script for macosx # DO NOT invoke directly. # Works for 10.4 and 10.5. (The 10.5 support might work for 10.4 but keep # both versions in case we need to support earlier versions.) cmd=$1 case "x$cmd" in xuser) # fail unless user exists (good through 10.4) user=$2 gotuser=`niutil -readval . /users/$user name 0 2>/dev/null` [ -z $gotuser ] && (echo "User $user does not exist." exit 1; ) ;; #name: dummy1 #_writers_passwd: dummy1 #_writers_tim_password: dummy1 #_writers_picture: dummy1 #home: /Users/dummy1 #gid: 504 #picture: /Library/User Pictures/Animals/Dragonfly.tif #uid: 504 #hint: dummy1 #_writers_hint: dummy1 #sharedDir: #_shadow_passwd: #_writers_realname: dummy1 #shell: /bin/bash #passwd: ******** #authentication_authority: ;ShadowHash; #realname: dummyname1 #generateduid: F6D4991C-BDF5-481F-A407-D84C6A2D0E2A xgroup) # fail unless group exists (good through 10.4) group=$2 gotgrp=`niutil -readval . /groups/$group name 0 2>/dev/null` [ -z $gotgrp ] && ( echo "Group $group does not exist." exit 1 ) ;; #niutil -read . /groups/bin name 0 #name: bin #gid: 7 #passwd: * #generateduid: ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000007 #smb_sid: S-1-5-21-107 #realname: Binary xuser2) # fail unless user exists (required as of 10.5) user=$2 if( dscl localhost -read /Search/Users/$user 1>/dev/null 2>&1 ); then true; else echo "User $user does not exist."; exit 1; fi ;; xgroup2) # if group does not exist, create it (required as of 10.5) group=$2 [ -z $group ] && ( echo "No group specified." exit 1 ) if( dscl localhost -read /Search/Groups/$group 1>/dev/null 2>&1 ); then true; else echo "Group $group does not exist - creating."; dseditgroup -o create -r "Games Group" -s 3600 $group if( dscl localhost -read /Search/Groups/$group 1>/dev/null 2>&1 ); then true; else echo "Unable to create group $group." exit 1 fi fi ;; xeditsysconf) src=$2 dest=$3 ptg=1 # We don't need an LLDB module because any MacOSX new enough to # have no Apple supported gdb is also new enough to get good # stack traces through libc. # NB: xcrun will check $PATH if [[ -x /usr/bin/xcrun && `/usr/bin/xcrun -f gdb 2>/dev/null` ]] ; then gdbpath="GDBPATH="`/usr/bin/xcrun -f gdb` elif [ -f /usr/bin/gdb ]; then gdbpath='GDBPATH=/usr/bin/gdb' #traditional location elif [ -f /opt/local/bin/ggdb ]; then gdbpath='GDBPATH=/opt/local/bin/ggdb' #macports gdb elif [ -f /Developer/usr/bin/gdb ]; then # this one seems to be broken with Xcode 5.1.1 on Mountain Lion gdbpath='GDBPATH=/Developer/usr/bin/gdb' #older Xcode tools else gdbpath='#GDBPATH' #none of the above ptg=0 fi if [ -f /bin/grep ]; then greppath='GREPPATH=/bin/grep' elif [ -f /usr/bin/grep ]; then greppath='GREPPATH=/usr/bin/grep' else greppath='#GREPPATH' fi # PANICTRACE_GDB value should only be replaced if gdbpath is '#GDBPATH' if ! [ -e $dest ]; then sed -e "s:^GDBPATH=.*:$gdbpath:" \ -e "s:^GREPPATH=.*:$greppath:" \ -e "s/^PANICTRACE_GDB=./PANICTRACE_GDB=$ptg/" \ -e 's/^#OPTIONS=.*/&\ OPTIONS=!use_darkgray/' \ $src > $dest fi ;; #% dscl localhost -read /Search/Groups/wheel # AppleMetaNodeLocation: /Local/Default # GeneratedUID: ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000000 # GroupMembership: root # Password: * # PrimaryGroupID: 0 # RealName: # System Group # RecordName: wheel # RecordType: dsRecTypeStandard:Groups # SMBSID: S-1-5-21-100 xdescplist) SVSDOT=`util/makedefs --svs .` cat < IFPkgDescriptionDeleteWarning IFPkgDescriptionDescription NetHack $SVSDOT for the MacOS X Terminal IFPkgDescriptionTitle NetHack IFPkgDescriptionVersion $SVSDOT E_O_M ;; xinfoplist) SVSDOT=`util/makedefs --svs .` cat < CFBundleGetInfoString NetHack $SVSDOT for the MacOS X Terminal CFBundleIdentifier org.nethack.term CFBundleName NetHack CFBundleShortVersionString $SVSDOT IFMajorVersion 3 IFMinorVersion 3 IFPkgFlagAllowBackRev IFPkgFlagAuthorizationAction RootAuthorization IFPkgFlagDefaultLocation / IFPkgFlagInstallFat IFPkgFlagIsRequired IFPkgFlagOverwritePermissions IFPkgFlagRelocatable IFPkgFlagRestartAction NoRestart IFPkgFlagRootVolumeOnly IFPkgFlagUpdateInstalledLanguages IFPkgFlagUseUserMask IFPkgFormatVersion 0.10000000149011612 E_O_M ;; *) echo "Unknown command $cmd" exit 1 ;; esac # dscl localhost -read /Search/Users/games # dsAttrTypeNative:_writers_hint: games # dsAttrTypeNative:_writers_jpegphoto: games # dsAttrTypeNative:_writers_LinkedIdentity: games # dsAttrTypeNative:_writers_passwd: games # dsAttrTypeNative:_writers_picture: games # dsAttrTypeNative:_writers_realname: games # dsAttrTypeNative:_writers_UserCertificate: games # AppleMetaNodeLocation: /Local/Default # AuthenticationAuthority: ;ShadowHash; ;Kerberosv5;;games@LKDC:SHA1.3F695B215C78511043D9787CA51DE92E6494A021;LKDC:SHA1.3F695B215C78511043D9787CA51DE92E6494A021; # AuthenticationHint: games # GeneratedUID: A727EFB1-D6AA-4FE2-8524-0E154890E9A9 # NFSHomeDirectory: /Users/games # Password: ******** # Picture: # /Library/User Pictures/Flowers/Sunflower.tif # PrimaryGroupID: 20 # RealName: games # RecordName: games # RecordType: dsRecTypeStandard:Users # UniqueID: 505 # UserShell: /bin/bash # see also: http://developer.apple.com/documentation/Porting/Conceptual/PortingUnix/additionalfeatures/chapter_10_section_9.html # another mess: 10.4 creates a group for every user, 10.5 dumps you into staff. # so I think we need to explicitly create group games in both (if it doesn't # exist) and use owner bin (nope that fails since everything seems to be owned # by root. Do we want that? How about just creating user games as well?) # [Hermes:sys/unix/hints] keni% dscl localhost -read /Search/Users/games9 # DS Error: -14136 (eDSRecordNotFound) # [Hermes:sys/unix/hints] keni% dscl localhost -read /Search/Users/games9 >/dev/null # DS Error: -14136 (eDSRecordNotFound) # [Hermes:sys/unix/hints] keni% dscl localhost -read /Search/Users/games > /dev/null # status is good: 0 or 56 # file:///Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.CoreReference.docset/Contents/Resources/Documents/releasenotes/MacOSXServer/RN-DirectoryServices/index.html