ifelse(`
/etc/netatalk/AppleVolumes.default.m4
Copyright 2002 Jonas Smedegaard <dr@jones.dk>

$Id: AppleVolumes.default.m4,v 1.1 2002-08-27 01:19:36 jonas Exp $

m4 share definitions for generating Netatalk server AppleVolumes.default file

Usage: m4 -DFQDN=<FQDN> /etc/local-COMMON/netatalk/AppleVolumes.default.m4 > /etc/netatalk/AppleVolumes.default

Depend on file /etc/local-COMMON/file-<FQDN>.m4 containing lines of
the following syntax:
	_dir(<path>,<uid>,<gid>,<modes>)dnl
	_homefiles(<os>,<mount>,<desc>,<path>[,ro])dnl
	_files(<os>,<mount>,<desc>,<path>,<uid>,<gid>,<modes>[,ro[,<group>]|,rw,<group>[,<othergroup>]])dnl
where
	<os>:		Client operating systems (mac|win|any)
	<mount>:	Mount point name
				Some mount points are handled specially:
					"netlogon" has browsing and share modes disabled
					"userprofiles" sets "force user" and pre-creates user subdirectory mode 700
					"reference" allows guests
					"homes" has read/write access and pre-creates directory mode 750
				Samba:	Use single word and max. 8 characters for WfW compatibility
	<desc>:		Mount point description. Full(?) support for iso8859-1.
	<path>:		Full path to mount point directory
	<uid>:		user name of owner of mount point directory
	<gid>:		group name of owner of mount point directory
	<modes>:	Numeric access modes of mount point directory
	ro|rw|rop|rwp:	Read-only or read/write access to mount point, and wether it should be private (not publically announced).
				Read-only access if undefined.
				_homefiles are always private.
				_homefiles are by default read-only, except "homes" (see above).
	<group>:	Primary group with access to mountpoint.
				If mount point has access "rw" then primary group has read/write access as well.
	<othergroup>:	Secondary group with readonly access

Example:

	_dir(/home/fsadmin/COMMON,fsadmin,fsadmin,755)dnl
	_files(win,netlogon,Network logon,/etc/samba/netlogon,root,root,755,ro)
	_files(win,userprofiles,User profiles,/home/fsadmin/COMMON/samba/userprofiles,root,root,755)
	_files(win,reference,DEBIAN: Samba Linux server,/home/fsadmin/COMMON/reference)
	_homefiles(win,homes,Personal files,%H/pc))
	_homefiles(mac,,Personal files,~/mac))
	_files(win,soft,softshare,/home/fsadmin/COMMON/software,fsadmin,fsadmin,775)dnl
	_printer(win,LW,Networkprinter queue for Apple LaserWriter 16/600,/tmp,lw)

TODO:
	Support for netatalk is not yet implemented.
	<othergroup> is not yet implemented.
	Get rid of <os>: <othergroup> is now 10nth parameter which is only available in GNU m4.
	All _homefiles (including "homes") should probably have similar access default (read-only).

')dnl
changequote(<, >)dnl
define(<_veto_mac>, </.AppleDouble/.AppleDesktop/Network Trash Folder/DesktopFolderDB/resource.frk/Icon^M/TheVolumeSettingsFolder/>)dnl
define(<_warn>,
< # WARNING: $1
# >)dnl
define(<_dir>, <>)dnl
dnl *************
dnl *** files ***
dnl *************
define(<_files>,
<ifelse($1,mac,
undefine(<_group_read>)dnl
undefine(<_world_read>)dnl
undefine(<_user_write>)dnl
undefine(<_group_write>)dnl
$4	ifelse(<$3>,,<"$2">,<"<$3>">)dnl
ifdef($8,
    ifelse($8,ro,
	<define(<_group_read>)>,
    $8,rop,
	<define(<_group_read>)>,
    $8,rw,
	<define(<_user_write>)dnl
	    ifdef($9,
		ifelse($9,,,
		    define(<_group_write>)))>,
    $8,rwp,
	<define(<_user_write>)>,
    _warn(<share access is wrong. Must be either "ro", "rop", "rw" or "rwp">)dnl
))dnl
ifdef(<_user_write>,
    ifdef(<_group_write>,
	ifdef(<_world_read>,,),
    ifdef(<_group_read>,
	ifdef(<_world_read>,,),
    )),
dnl ***user read, group read***(?)
dnl ***user read***
    
)dnl
ifelse($9,,,
< allow:@$9> ifdef(<_user_write>,,
    < ro>))dnl
ifdef(<_veto>,
<	veto files = _veto_mac
>)dnl
)dnl
>)dnl
dnl *****************
dnl *** homefiles ***
dnl *****************
define(<_homefiles>,
<ifelse($1,mac,
define(<_homefiles_access>, <rwp>)dnl
ifdef($5,
    ifelse($5,ro,
define(<_homefiles_access>, <rop>)))dnl
<_files($1,$2,<$3>,$4,,,,_homefiles_access)>dnl
)>)dnl
define(<_printer>, <>)dnl
>)dnl
dnl
include(/etc/local-COMMON/file-FQDN.m4)dnl