[Adduser-devel] r192 - in trunk: debian examples examples/examples examples/examples/skel examples/examples/skel.other
Marc Haber
zugschlus@costa.debian.org
Sat, 05 Feb 2005 13:48:53 +0100
Author: zugschlus
Date: 2005-02-05 13:48:53 +0100 (Sat, 05 Feb 2005)
New Revision: 192
Added:
trunk/examples/examples/
trunk/examples/examples/adduser.conf
trunk/examples/examples/bash.bashrc
trunk/examples/examples/profile
trunk/examples/examples/skel.other/
trunk/examples/examples/skel.other/index.html
trunk/examples/examples/skel/
trunk/examples/examples/skel/dot.bash_logout
trunk/examples/examples/skel/dot.bash_profile
trunk/examples/examples/skel/dot.bashrc
Modified:
trunk/debian/changelog
trunk/debian/copyright
trunk/examples/INSTALL
trunk/examples/README
trunk/examples/adduser.local
trunk/examples/adduser.local.conf
Log:
* Add new adduser.local examples directory by John Zaitseff. (mh)
Closes: #273010.
Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/debian/changelog 2005-02-05 12:48:53 UTC (rev 192)
@@ -14,9 +14,11 @@
* Fix adduser manpage: Adding an already-existing system user issues
a warning. The manpage claims adduser will exit silently. (mh)
* Add Basque program and debconf translation. Thanks to Piarres Beobide
- Egaña. (mh) Closes: #279659.
+ Egaña. (mh) Closes: #279659.
+ * Add new adduser.local examples directory by John Zaitseff. (mh)
+ Closes: #273010.
- -- Marc Haber <mh+debian-packages@zugschlus.de> Sat, 5 Feb 2005 13:41:54 +0100
+ -- Marc Haber <mh+debian-packages@zugschlus.de> Sat, 5 Feb 2005 13:48:15 +0100
adduser (3.59) unstable; urgency=low
Modified: trunk/debian/copyright
===================================================================
--- trunk/debian/copyright 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/debian/copyright 2005-02-05 12:48:53 UTC (rev 192)
@@ -21,6 +21,9 @@
adduser is Copyright (C) 1995 Ted Hajek <tedhajek@boombox.micro.umn.edu>
with portions Copyright (C) 1994 Debian Association, Inc.
+The examples directory has been contributed by John Zaitseff, and is
+GPL V2 as well.
+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
Modified: trunk/examples/INSTALL
===================================================================
--- trunk/examples/INSTALL 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/examples/INSTALL 2005-02-05 12:48:53 UTC (rev 192)
@@ -2,11 +2,12 @@
be done to install the ADDUSER Local System Additions program. In brief:
# cp ./adduser.local /usr/local/sbin
+# chmod 755 /usr/local/sbin/adduser.local
# cp ./adduser.local.conf /etc
# editor /etc/adduser.local.conf # The important step!
# mkdir /etc/skel.other
# cp ./examples/skel.other/index.html /etc/skel.other
-IMPORTANT: Do NOT just perform the above steps without knowing what you
-are doing! In particular, the third step is very important for you to do
+IMPORTANT: Do NOT just perform the above steps without knowing what you
+are doing! In particular, the fourth step is very important for you to do
correctly.
Modified: trunk/examples/README
===================================================================
--- trunk/examples/README 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/examples/README 2005-02-05 12:48:53 UTC (rev 192)
@@ -1,7 +1,7 @@
**************************************************************************
* *
-* ADDUSER Local System Additions v4.3 *
-* Copyright (C) 1999-2001, John Zaitseff *
+* ADDUSER Local System Additions v4.6 *
+* Copyright (C) 1999-2004, John Zaitseff *
* *
**************************************************************************
@@ -17,11 +17,11 @@
"ftp" and "www" groups and so on. All, naturally, without forgetting any
vital step!
-The adduser.local program automates all this for you. By modifying the
-program's configuration file, /etc/adduser.local.conf, to match your local
-requirements, this program can automatically add a user to supplementary
-groups, create directories and symbolic links and copy skeleton files to
-the newly-created directories.
+The adduser.local program automates much of this for you. By modifying
+the program's configuration file, /etc/adduser.local.conf, to match your
+local requirements, this program can automatically add a user to
+supplementary groups, create directories and symbolic links and copy
+skeleton files to the newly-created directories.
Note that once you install this program (and edit the configuration file),
you will never need to directly run adduser.local: the Debian adduser(8)
@@ -69,7 +69,7 @@
- the file "/etc/skel.other/index.html" is copied to this directory,
owned by the user "john" and with group owner "www".
-For more details, just read through the sample configuration file!
+For more details, just read through the sample configuration file.
INSTALLATION
@@ -81,6 +81,7 @@
1. Copy the actual program to the correct location:
# cp ./adduser.local /usr/local/sbin
+ # chmod 755 /usr/local/sbin/adduser.local
2. Copy the configuration file to the correct location:
@@ -98,7 +99,7 @@
# mkdir /etc/skel.other
# cp ./examples/skel.other/index.html /etc/skel.other
-5. You are finished!
+5. You are finished.
The main reason you have to install this program manually is so that you
do not forget to do Step 3, the most important one!
@@ -128,10 +129,10 @@
welcome! Please send these to:
Postal: John Zaitseff,
- 4 McCabe Close,
- Menai, NSW, 2234,
+ Unit 6, 116 Woodburn Road,
+ Berala, NSW, 2141,
Australia.
E-mail: J.Zaitseff@zap.org.au
-Web: http://www.zap.org.au/software/adduser.local/
-FTP: ftp://ftp.zap.org.au/pub/adduser.local/adduser.local.tar.gz
+Web: http://www.zap.org.au/software/utils/adduser.local/
+FTP: ftp://ftp.zap.org.au/pub/utils/adduser.local/adduser.local.tar.gz
Modified: trunk/examples/adduser.local
===================================================================
--- trunk/examples/adduser.local 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/examples/adduser.local 2005-02-05 12:48:53 UTC (rev 192)
@@ -2,14 +2,14 @@
#########################################################################
# #
-# ADDUSER Local System Additions v4.3 #
-# Copyright (C) 1999-2001, John Zaitseff #
+# ADDUSER Local System Additions v4.6 #
+# Copyright (C) 1999-2004, John Zaitseff #
# #
#########################################################################
# Author: John Zaitseff <J.Zaitseff@zap.org.au>
-# Date: 17th April, 2001
-# Version: 4.3
+# Date: 23rd September, 2004
+# Version: 4.6
# This program, once installed as /usr/local/sbin/adduser.local, is auto-
# matically called by the adduser(8) system program on a Debian system.
@@ -53,101 +53,105 @@
#########################################################################
# Configuration parameters and default values
-($O = $0) =~ s,^.*/,,; # adduser.local script name (without path)
-$version = '4.3'; # Script version
+use strict;
-@adduser = ('/usr/sbin/adduser', '--quiet'); # Location of adduser(8)
-@chown = ('/bin/chown'); # Location of chown(1)
-@install = ('/usr/bin/install', '-p'); # Location of install(1)
-$procmounts = '/proc/mounts'; # List of current mounts
-$s_false = 'false'; # False string value, in lower case
-$s_true = 'true'; # True string value, in lower case
+(our $O = $0) =~ s,^.*/,,; # adduser.local script name (without path)
+our $version = '4.6'; # Script version
+our @adduser = ('/usr/sbin/adduser', '--quiet'); # adduser(8)
+our @chown = ('/bin/chown'); # chown(1)
+our @install = ('/usr/bin/install', '-p'); # install(1)
+
+our $procmounts = '/proc/mounts'; # List of current mounts
+
+our $s_false = 'false'; # False string value, in lower case
+our $s_true = 'true'; # True string value, in lower case
+
# These default values are extensively documented in adduser.local.conf.
-$d_conffile = '/etc/adduser.local.conf'; # Configuration file location
-$d_skelother = '/etc/skel.other'; # Location of skeleton files
-$d_dirmode = '2755'; # Octal mode for directories
-$d_filemode = '0644'; # Octal mode for files
+our $d_conffile = '/etc/adduser.local.conf'; # Configuration file location
+our $d_skelother = '/etc/skel.other'; # Location of skeleton files
+our $d_dirmode = '2755'; # Octal mode for directories
+our $d_filemode = '0644'; # Octal mode for files
-$d_user = ''; # Default service user name
-$d_group = ''; # Default service group name
-$d_addtogroup = $s_false; # Default for addtogroup variable
-$d_homedir = ''; # Default home directory
-$d_subdir = ''; # Default subdirectory
-$d_althome = $s_false; # Default for using alternate home directory
-$d_mounted = $s_false; # Default for checking if mounted
-$d_mkdir = $s_false; # Default for creating directory
-$d_chgrpdir = $s_false; # Default for chgrpdir variable
-$d_mklink = $s_false; # Default for creating symbolic link
-$d_linkname = ''; # Default for symbolic link name
-$d_skelfile = ''; # Default for skeleton file
-$d_chgrpskel = $s_false; # Default for chgrpskel variable
+our $d_user = ''; # Default service user name
+our $d_group = ''; # Default service group name
+our $d_addtogroup = $s_false; # Default for addtogroup variable
+our $d_homedir = ''; # Default home directory
+our $d_subdir = ''; # Default subdirectory
+our $d_althome = $s_false; # Default for use alternate home directory
+our $d_mounted = $s_false; # Default for checking if mounted
+our $d_mkdir = $s_false; # Default for creating directory
+our $d_chgrpdir = $s_false; # Default for chgrpdir variable
+our $d_mklink = $s_false; # Default for creating symbolic link
+our $d_linkname = ''; # Default for symbolic link name
+our $d_skelfile = ''; # Default for skeleton file
+our $d_chgrpskel = $s_false; # Default for chgrpskel variable
# Various strings appearing in the configuration file. While they are
# case insensitive in the configuration file, they must appear in lower
# case here.
-$s_skelother = 'skelother';
-$s_dirmode = 'dirmode';
-$s_filemode = 'filemode';
+our $s_skelother = 'skelother';
+our $s_dirmode = 'dirmode';
+our $s_filemode = 'filemode';
-$s_service = 'service';
+our $s_service = 'service';
-$s_user = 'user';
-$s_group = 'group';
-$s_addtogroup = 'addtogroup';
-$s_homedir = 'homedir';
-$s_subdir = 'subdir';
-$s_althome = 'althome';
-$s_mounted = 'mounted';
-$s_mkdir = 'mkdir';
-$s_chgrpdir = 'chgrpdir';
-$s_mklink = 'mklink';
-$s_linkname = 'linkname';
-$s_skelfile = 'skelfile';
-$s_chgrpskel = 'chgrpskel';
+our $s_user = 'user';
+our $s_group = 'group';
+our $s_addtogroup = 'addtogroup';
+our $s_homedir = 'homedir';
+our $s_subdir = 'subdir';
+our $s_althome = 'althome';
+our $s_mounted = 'mounted';
+our $s_mkdir = 'mkdir';
+our $s_chgrpdir = 'chgrpdir';
+our $s_mklink = 'mklink';
+our $s_linkname = 'linkname';
+our $s_skelfile = 'skelfile';
+our $s_chgrpskel = 'chgrpskel';
-@s_false = ($s_false, 'f', 'no', 'n', '0');
-@s_true = ($s_true, 't', 'yes', 'y', '1');
+our @s_false = ($s_false, 'f', 'no', 'n', '0');
+our @s_true = ($s_true, 't', 'yes', 'y', '1');
# Strings internal to this program (as used by the %cv hash)
-$s_svcuid = '.svcuid'; # Storage for UID of service's user name
-$s_svcgid = '.svcgid'; # GID of service's user name or group name
-$s_actualdir = '.actualdir'; # Actual directory: homedir + subdir + username
-$s_actuallink = '.actuallink'; # Actual symbolic link: user homedir + linkname
-$s_actualsrcf = '.actualsrcf'; # Actual source file: skelother + skelfile
-$s_actualdstf = '.actualdstf'; # Actual destination file: actualdir + skelfile
+our $s_svcuid = '.svcuid'; # Storage for UID of service's user name
+our $s_svcgid = '.svcgid'; # GID of service's user name or group name
+our $s_actualdir = '.actualdir'; # Actual dir: homedir + subdir + username
+our $s_actuallink = '.actuallink'; # Actual sym link: user homedir + linkname
+our $s_actualsrcf = '.actualsrcf'; # Actual source file: skelother + skelfile
+our $s_actualdstf = '.actualdstf'; # Actual dest file: actualdir + skelfile
-$s_addtogroupB = '.addtogroupB'; # Boolean versions of variables
-$s_althomeB = '.althomeB';
-$s_mountedB = '.mountedB';
-$s_mkdirB = '.mkdirB';
-$s_chgrpdirB = '.chgrpdirB';
-$s_mklinkB = '.mklinkB';
-$s_chgrpskelB = '.chgrpskelB';
+our $s_addtogroupB = '.addtogroupB'; # Boolean versions of variables
+our $s_althomeB = '.althomeB';
+our $s_mountedB = '.mountedB';
+our $s_mkdirB = '.mkdirB';
+our $s_chgrpdirB = '.chgrpdirB';
+our $s_mklinkB = '.mklinkB';
+our $s_chgrpskelB = '.chgrpskelB';
#########################################################################
# Initialise global variables
-$conffile = $d_conffile; # Default configuration file
-$verbose = 1; # Be verbose by default
-$dryrun = 0; # NOT a dry run by default
+our $conffile = $d_conffile; # Default configuration file
+our $verbose = 1; # Be verbose by default
+our $dryrun = 0; # NOT a dry run by default
-$sep = '.'; # Service-specific separator
+our @services = (); # No services to install by default
-@services = (); # No services to install by default
-
# %cv is a hash for all configuration variables read in from the
# configuration file. Global variables are represented by their strings,
# eg, $cv{"skelother"}. Service-specific variables are represented by the
-# service string value, then $sep, then their string, eg, $cv{"www.user"}.
+# service string value, a comma, then their string, eg, $cv{"www","user"}.
# The %cl hash plays a similar role, but contains the line number of the
# configuration.
+our (%cv, %cl);
+
$cv{$s_skelother} = $d_skelother; $cl{$s_skelother} = 0;
$cv{$s_dirmode} = $d_dirmode; $cl{$s_dirmode} = 0;
$cv{$s_filemode} = $d_filemode; $cl{$s_filemode} = 0;
@@ -156,7 +160,14 @@
$ENV{PATH} = '/usr/sbin:/usr/bin:/sbin:/bin';
+# Declare some global variables
+our $username; # Username for which adduser.local was called
+our $uid; # User's UID
+our $gid; # User's GID
+our $homedir; # User's home directory
+
+
#########################################################################
# Process command-line arguments
@@ -228,7 +239,7 @@
$username = $ARGV[0];
- ($t_name, my $t1, $uid, $gid, my $t2, my $t3, my $t4, $homedir)
+ (my $t_name, my $t1, $uid, $gid, my $t2, my $t3, my $t4, $homedir)
= getpwnam($username);
die "$O: No such user: $username\n" if ! $t_name;
@@ -242,7 +253,7 @@
$homedir = $ARGV[3];
$homedir =~ s,/$,,; # Remove trailing '/' if present
- ($t_name, my $t1, $t_uid, $t_gid) = getpwnam($username);
+ (my $t_name, my $t1, my $t_uid, my $t_gid) = getpwnam($username);
die "$O: No such user: $username\n" if ! $t_name;
die "$O: No such UID: $uid\n" if ! getpwuid($uid);
@@ -293,47 +304,44 @@
if ($lcvar eq $s_service) {
# Special global configuration variable "service"
- my $svc;
+ my $svc = $lcval;
- if (grep((lc $_) eq $lcval, @services)) {
+ if (grep((lc $_) eq $svc, @services)) {
warn "$O: Service \"$val\" redefined at $conffile:$.\n";
next;
}
push @services, $val;
- # Set up default values. See the note later on as to why $svc
- # is defined in the following way.
+ # Set up default values
- $svc = $lcval . $sep;
+ $cv{$svc,$s_user} = $d_user;
+ $cv{$svc,$s_group} = $d_group;
+ $cv{$svc,$s_addtogroup} = $d_addtogroup;
+ $cv{$svc,$s_homedir} = $d_homedir;
+ $cv{$svc,$s_subdir} = $d_subdir;
+ $cv{$svc,$s_althome} = $d_althome;
+ $cv{$svc,$s_mounted} = $d_mounted;
+ $cv{$svc,$s_mkdir} = $d_mkdir;
+ $cv{$svc,$s_chgrpdir} = $d_chgrpdir;
+ $cv{$svc,$s_mklink} = $d_mklink;
+ $cv{$svc,$s_linkname} = $d_linkname;
+ $cv{$svc,$s_skelfile} = $d_skelfile;
+ $cv{$svc,$s_chgrpskel} = $d_chgrpskel;
- $cv{$svc.$s_user} = $d_user;
- $cv{$svc.$s_group} = $d_group;
- $cv{$svc.$s_addtogroup} = $d_addtogroup;
- $cv{$svc.$s_homedir} = $d_homedir;
- $cv{$svc.$s_subdir} = $d_subdir;
- $cv{$svc.$s_althome} = $d_althome;
- $cv{$svc.$s_mounted} = $d_mounted;
- $cv{$svc.$s_mkdir} = $d_mkdir;
- $cv{$svc.$s_chgrpdir} = $d_chgrpdir;
- $cv{$svc.$s_mklink} = $d_mklink;
- $cv{$svc.$s_linkname} = $d_linkname;
- $cv{$svc.$s_skelfile} = $d_skelfile;
- $cv{$svc.$s_chgrpskel} = $d_chgrpskel;
-
- $cl{$svc.$s_user} = 0;
- $cl{$svc.$s_group} = 0;
- $cl{$svc.$s_addtogroup} = 0;
- $cl{$svc.$s_homedir} = 0;
- $cl{$svc.$s_subdir} = 0;
- $cl{$svc.$s_althome} = 0;
- $cl{$svc.$s_mounted} = 0;
- $cl{$svc.$s_mkdir} = 0;
- $cl{$svc.$s_chgrpdir} = 0;
- $cl{$svc.$s_mklink} = 0;
- $cl{$svc.$s_linkname} = 0;
- $cl{$svc.$s_skelfile} = 0;
- $cl{$svc.$s_chgrpskel} = 0;
+ $cl{$svc,$s_user} = 0;
+ $cl{$svc,$s_group} = 0;
+ $cl{$svc,$s_addtogroup} = 0;
+ $cl{$svc,$s_homedir} = 0;
+ $cl{$svc,$s_subdir} = 0;
+ $cl{$svc,$s_althome} = 0;
+ $cl{$svc,$s_mounted} = 0;
+ $cl{$svc,$s_mkdir} = 0;
+ $cl{$svc,$s_chgrpdir} = 0;
+ $cl{$svc,$s_mklink} = 0;
+ $cl{$svc,$s_linkname} = 0;
+ $cl{$svc,$s_skelfile} = 0;
+ $cl{$svc,$s_chgrpskel} = 0;
}
else {
# Ordinary global variable
@@ -358,19 +366,18 @@
my $lcvar = lc $var;
my $lcsvc = lc $svc;
- my $svcvar = $lcsvc . $sep . $lcvar;
if (! grep((lc $_) eq $lcsvc, @services)) {
warn "$O: Undefined service \"$svc\" at $conffile:$.\n";
next;
}
- if (! defined($cv{$svcvar})) {
+ if (! defined($cv{$lcsvc,$lcvar})) {
warn "$O: Unknown service variable \"$var\" at $conffile:$.\n";
next;
}
- $cv{$svcvar} = $val;
- $cl{$svcvar} = $.;
+ $cv{$lcsvc,$lcvar} = $val;
+ $cl{$lcsvc,$lcvar} = $.;
}
# Otherwise, it is an error in the configuration file
@@ -417,88 +424,88 @@
#########################################################################
# Actually perform what is required, with appropriate error checking
-foreach $service (@services) {
+foreach my $service (@services) {
- # Note that defining $svc in the following way is rather clever; it
- # allows access to the %cv and %cl hashes to be more aesthetically
- # pleasing, especially to a C programmer! For example, the "mkdir"
- # component would be accessed by $cv{$svc.$s_mkdir} instead of the
- # more cumbersome (but equivalent) $cv{lc($service) . $sep . $s_mkdir}.
-
- my $svc = lc($service) . $sep;
+ my $svc = lc $service;
my ($t_user, $t_group, $t_homedir);
print "Processing service \"$service\"\n" if $verbose;
# Check validity of all boolean variables and convert them to true bools
- &chkbool($svc.$s_addtogroup, $svc.$s_addtogroupB, $d_addtogroup, "$s_addtogroup\[$service\]");
- &chkbool($svc.$s_althome, $svc.$s_althomeB, $d_althome, "$s_althome\[$service\]");
- &chkbool($svc.$s_mounted, $svc.$s_mountedB, $d_mounted, "$s_mounted\[$service\]");
- &chkbool($svc.$s_mkdir, $svc.$s_mkdirB, $d_mkdir, "$s_mkdir\[$service\]");
- &chkbool($svc.$s_chgrpdir, $svc.$s_chgrpdirB, $d_chgrpdir, "$s_chgrpdir\[$service\]");
- &chkbool($svc.$s_mklink, $svc.$s_mklinkB, $d_mklink, "$s_mklink\[$service\]");
- &chkbool($svc.$s_chgrpskel, $svc.$s_chgrpskelB, $d_chgrpskel, "$s_chgrpskel\[$service\]");
+ # Note that the notation $hash{$idx1,$idx2} is exactly the same as the
+ # expression $hash{$idx1 . $; . $idx2}. It is for this reason that
+ # $svcc is defined.
+ my $svcc = $svc . $;; # $svc concatenated with $; ($SUBSEP)
+
+ &chkbool($svcc.$s_addtogroup, $svcc.$s_addtogroupB, $d_addtogroup, "$s_addtogroup\[$service\]");
+ &chkbool($svcc.$s_althome, $svcc.$s_althomeB, $d_althome, "$s_althome\[$service\]");
+ &chkbool($svcc.$s_mounted, $svcc.$s_mountedB, $d_mounted, "$s_mounted\[$service\]");
+ &chkbool($svcc.$s_mkdir, $svcc.$s_mkdirB, $d_mkdir, "$s_mkdir\[$service\]");
+ &chkbool($svcc.$s_chgrpdir, $svcc.$s_chgrpdirB, $d_chgrpdir, "$s_chgrpdir\[$service\]");
+ &chkbool($svcc.$s_mklink, $svcc.$s_mklinkB, $d_mklink, "$s_mklink\[$service\]");
+ &chkbool($svcc.$s_chgrpskel, $svcc.$s_chgrpskelB, $d_chgrpskel, "$s_chgrpskel\[$service\]");
+
# Process the "user" configuration variable
- if ($cv{$svc.$s_user} ne '') {
+ if ($cv{$svc,$s_user} ne '') {
# Retrieve information about the specified service's user name
- ($t_user, my $t1, $cv{$svc.$s_svcuid}, $cv{$svc.$s_svcgid},
- my $t2, my $t3, my $t4, $t_homedir)
- = getpwnam $cv{$svc.$s_user};
+ (my $t_user, my $t1, $cv{$svc,$s_svcuid}, $cv{$svc,$s_svcgid},
+ my $t2, my $t3, my $t4, my $t_homedir)
+ = getpwnam $cv{$svc,$s_user};
if (! $t_user) {
- warn "$O: Illegal user name \"$cv{$svc.$s_user}\" at $conffile:$cl{$svc.$s_user}\n";
+ warn "$O: Illegal user name \"$cv{$svc,$s_user}\" at $conffile:$cl{$svc,$s_user}\n";
} else {
- $cv{$svc.$s_user} = $t_user;
+ $cv{$svc,$s_user} = $t_user;
}
# Only set home directory information if not specified by user
- if ($cv{$svc.$s_homedir} eq '') {
- if ($cv{$svc.$s_althomeB}) {
- $cv{$svc.$s_homedir} = $homedir; # From command line
+ if ($cv{$svc,$s_homedir} eq '') {
+ if ($cv{$svc,$s_althomeB}) {
+ $cv{$svc,$s_homedir} = $homedir; # From command line
} else {
- $cv{$svc.$s_homedir} = $t_homedir; # From service's home
+ $cv{$svc,$s_homedir} = $t_homedir; # From service's home
}
}
# If the group parameter is not specified, get the appropriate info
# from the user information
- if ($cv{$svc.$s_svcgid} && ($cv{$svc.$s_group} eq '')) {
- ($cv{$svc.$s_group}) = getgrgid $cv{$svc.$s_svcgid};
+ if ($cv{$svc,$s_svcgid} && ($cv{$svc,$s_group} eq '')) {
+ ($cv{$svc,$s_group}) = getgrgid $cv{$svc,$s_svcgid};
}
}
# Process the "group" configuration variable
- if ($cv{$svc.$s_group} ne '') {
+ if ($cv{$svc,$s_group} ne '') {
# Retrieve info about the group. Yes, it may have been done
# above, but specifying "group" can be done without specifying
# "user". In addition, a different group can be specified from
# that used by "user".
- ($t_group, my $t1, $cv{$svc.$s_svcgid}) = getgrnam $cv{$svc.$s_group};
+ ($t_group, my $t1, $cv{$svc,$s_svcgid}) = getgrnam $cv{$svc,$s_group};
if (! $t_group) {
- warn "$O: Illegal group name \"$cv{$svc.$s_group}\" at $conffile:$cl{$svc.$s_group}\n";
+ warn "$O: Illegal group name \"$cv{$svc,$s_group}\" at $conffile:$cl{$svc,$s_group}\n";
- $cv{$svc.$s_addtogroup} = $s_false; $cv{$svc.$s_addtogroupB} = 0;
- $cv{$svc.$s_chgrpdir} = $s_false; $cv{$svc.$s_chgrpdirB} = 0;
- $cv{$svc.$s_chgrpskel} = $s_false; $cv{$svc.$s_chgrpskelB} = 0;
+ $cv{$svc,$s_addtogroup} = $s_false; $cv{$svc,$s_addtogroupB} = 0;
+ $cv{$svc,$s_chgrpdir} = $s_false; $cv{$svc,$s_chgrpdirB} = 0;
+ $cv{$svc,$s_chgrpskel} = $s_false; $cv{$svc,$s_chgrpskelB} = 0;
}
else {
- $cv{$svc.$s_group} = $t_group;
+ $cv{$svc,$s_group} = $t_group;
}
}
# Process the "addtogroup" configuration variable
- if ($cv{$svc.$s_addtogroupB} && ($cv{$svc.$s_group} ne '')) {
+ if ($cv{$svc,$s_addtogroupB} && ($cv{$svc,$s_group} ne '')) {
- my $t = $cv{$svc.$s_group};
- ($t_group, my $t1, $t_gid, $t_members) = getgrnam $t;
+ my $t = $cv{$svc,$s_group};
+ (my $t_group, my $t1, my $t_gid, my $t_members) = getgrnam $t;
# Check if the user is already a member of that group
@@ -514,11 +521,11 @@
# Process the "mounted" configuration variable
- $cv{$svc.$s_homedir} =~ s,/$,,; # Remove trailing / on homedir
- $cv{$svc.$s_subdir} =~ s,^/,,; # Remove leading / on subdir
- $cv{$svc.$s_subdir} =~ s,/$,,; # Remove trailing / on subdir
+ $cv{$svc,$s_homedir} =~ s,/$,,; # Remove trailing / on homedir
+ $cv{$svc,$s_subdir} =~ s,^/,,; # Remove leading / on subdir
+ $cv{$svc,$s_subdir} =~ s,/$,,; # Remove trailing / on subdir
- if (($cv{$svc.$s_homedir} ne '') && $cv{$svc.$s_mountedB}) {
+ if (($cv{$svc,$s_homedir} ne '') && $cv{$svc,$s_mountedB}) {
# Need to check for "mounted" before checking for the existence of
# of the service's home directory.
@@ -527,7 +534,7 @@
} else {
my ($t_dev, $t_mntpoint, $t_type, $t_options);
my $ismounted = 0;
- my $t_dir = $cv{$svc.$s_homedir} . '/';
+ my $t_dir = $cv{$svc,$s_homedir} . '/';
# Open mounts table and process it
@@ -548,60 +555,60 @@
close(MOUNTS) || die "$O: $procmounts: $!\n";
if (! $ismounted) {
- print " Directory $cv{$svc.$s_homedir} not mounted\n"
+ print " Directory $cv{$svc,$s_homedir} not mounted\n"
if $verbose;
- $cv{$svc.$s_homedir} = '';
+ $cv{$svc,$s_homedir} = '';
}
}
}
# Process the "homedir" and "subdir" configuration variables
- if ($cv{$svc.$s_homedir} ne '') {
- if (! -d $cv{$svc.$s_homedir}) {
- warn "$O: Directory $cv{$svc.$s_homedir} does not exist\n";
- $cv{$svc.$s_homedir} = '';
+ if ($cv{$svc,$s_homedir} ne '') {
+ if (! -d $cv{$svc,$s_homedir}) {
+ warn "$O: Directory $cv{$svc,$s_homedir} does not exist\n";
+ $cv{$svc,$s_homedir} = '';
}
- elsif (($cv{$svc.$s_subdir} ne '') && (! $cv{$svc.$s_althomeB})) {
- my $t = $cv{$svc.$s_homedir} . '/' . $cv{$svc.$s_subdir};
+ elsif (($cv{$svc,$s_subdir} ne '') && (! $cv{$svc,$s_althomeB})) {
+ my $t = $cv{$svc,$s_homedir} . '/' . $cv{$svc,$s_subdir};
if (! -d $t) {
warn "$O: Directory $t does not exist\n";
- $cv{$svc.$s_subdir} = '';
- $cv{$svc.$s_homedir} = '';
+ $cv{$svc,$s_subdir} = '';
+ $cv{$svc,$s_homedir} = '';
}
}
}
# Calculate the actual directory to create (if necessary)
- if ($cv{$svc.$s_homedir} ne '') {
- $cv{$svc.$s_actualdir} = $cv{$svc.$s_homedir};
- if ($cv{$svc.$s_subdir} ne '') {
- $cv{$svc.$s_actualdir} .= '/' . $cv{$svc.$s_subdir};
+ if ($cv{$svc,$s_homedir} ne '') {
+ $cv{$svc,$s_actualdir} = $cv{$svc,$s_homedir};
+ if ($cv{$svc,$s_subdir} ne '') {
+ $cv{$svc,$s_actualdir} .= '/' . $cv{$svc,$s_subdir};
}
- if (! $cv{$svc.$s_althomeB}) {
- $cv{$svc.$s_actualdir} .= '/' . $username;
+ if (! $cv{$svc,$s_althomeB}) {
+ $cv{$svc,$s_actualdir} .= '/' . $username;
}
}
# Process the "mkdir" and "chgrpdir" configuration variables
- if (($cv{$svc.$s_homedir} ne '') && $cv{$svc.$s_mkdirB}) {
- my $t = $cv{$svc.$s_actualdir};
+ if (($cv{$svc,$s_homedir} ne '') && $cv{$svc,$s_mkdirB}) {
+ my $t = $cv{$svc,$s_actualdir};
if (-d $t) {
print " Directory $t already exists\n" if $verbose;
} elsif (-e $t) {
warn "$O: $t is not a directory\n";
- $cv{$svc.$s_homedir} = '';
+ $cv{$svc,$s_homedir} = '';
} else {
print " Directory $t created\n" if $verbose;
mkdir($t, oct($cv{$s_dirmode})) if ! $dryrun;
# Note that this newly-created directory will inherit the
# SGID (set group ID) bit from its parent directory. This
# IS desired, hence, do NOT do a separate chmod()!
- if ($cv{$svc.$s_chgrpdirB}) {
- chown($uid, $cv{$svc.$s_svcgid}, $t) if ! $dryrun;
+ if ($cv{$svc,$s_chgrpdirB}) {
+ chown($uid, $cv{$svc,$s_svcgid}, $t) if ! $dryrun;
} else {
chown($uid, $gid, $t) if ! $dryrun;
}
@@ -610,22 +617,22 @@
# Process the "mklink" and "linkname" configuration variables
- if (($cv{$svc.$s_homedir} ne '') && $cv{$svc.$s_mklinkB}
- && (-d $cv{$svc.$s_actualdir})) {
+ if (($cv{$svc,$s_homedir} ne '') && $cv{$svc,$s_mklinkB}
+ && (-d $cv{$svc,$s_actualdir})) {
# Calculate the actual link name
- $cv{$svc.$s_linkname} =~ s,/$,,; # Remove trailing '/'
+ $cv{$svc,$s_linkname} =~ s,/$,,; # Remove trailing '/'
- if ($cv{$svc.$s_linkname} eq '') {
- $cv{$svc.$s_actuallink} = $homedir . '/' . $service;
+ if ($cv{$svc,$s_linkname} eq '') {
+ $cv{$svc,$s_actuallink} = $homedir . '/' . $service;
} else {
- $cv{$svc.$s_actuallink} = $homedir . '/' . $cv{$svc.$s_linkname};
+ $cv{$svc,$s_actuallink} = $homedir . '/' . $cv{$svc,$s_linkname};
}
# Create the symbolic link, if needed
- my $t = $cv{$svc.$s_actuallink};
+ my $t = $cv{$svc,$s_actuallink};
if (-l $t) {
print " Symbolic link $t already exists\n"
if $verbose;
@@ -633,9 +640,9 @@
warn "$O: $t is not a symbolic link\n";
} else {
print " Symbolic link $t created\n" if $verbose;
- symlink($cv{$svc.$s_actualdir}, $t) if ! $dryrun;
- if ($cv{$svc.$s_chgrpdirB}) {
- &lchown($uid, $cv{$svc.$s_svcgid}, $t) if ! $dryrun;
+ symlink($cv{$svc,$s_actualdir}, $t) if ! $dryrun;
+ if ($cv{$svc,$s_chgrpdirB}) {
+ &lchown($uid, $cv{$svc,$s_svcgid}, $t) if ! $dryrun;
} else {
&lchown($uid, $gid, $t) if ! $dryrun;
}
@@ -647,28 +654,28 @@
# Process the "skelfile" and "chgrpskel" configuration variables
- if (($cv{$svc.$s_homedir} ne '') && ($cv{$svc.$s_skelfile} ne '')
- && (-d $cv{$svc.$s_actualdir})) {
+ if (($cv{$svc,$s_homedir} ne '') && ($cv{$svc,$s_skelfile} ne '')
+ && (-d $cv{$svc,$s_actualdir})) {
- my $t = $cv{$svc.$s_skelfile};
- $cv{$svc.$s_actualsrcf} = $cv{$s_skelother} . '/' . $t;
- $cv{$svc.$s_actualdstf} = $cv{$svc.$s_actualdir} . '/' . $t;
+ my $t = $cv{$svc,$s_skelfile};
+ $cv{$svc,$s_actualsrcf} = $cv{$s_skelother} . '/' . $t;
+ $cv{$svc,$s_actualdstf} = $cv{$svc,$s_actualdir} . '/' . $t;
- if (-e $cv{$svc.$s_actualdstf}) {
- print " File $cv{$svc.$s_actualdstf} already exists\n"
+ if (-e $cv{$svc,$s_actualdstf}) {
+ print " File $cv{$svc,$s_actualdstf} already exists\n"
if $verbose;
- } elsif (! -r $cv{$svc.$s_actualsrcf}) {
- warn "$O: $cv{$svc.$s_actualsrcf}: $!\n";
+ } elsif (! -r $cv{$svc,$s_actualsrcf}) {
+ warn "$O: $cv{$svc,$s_actualsrcf}: $!\n";
} else {
- print " File $cv{$svc.$s_actualdstf} created\n" if $verbose;
- if ($cv{$svc.$s_chgrpskelB}) {
+ print " File $cv{$svc,$s_actualdstf} created\n" if $verbose;
+ if ($cv{$svc,$s_chgrpskelB}) {
system(@install, '-m', $cv{$s_filemode}, '-o', $uid,
- '-g', $cv{$svc.$s_svcgid},
- $cv{$svc.$s_actualsrcf}, $cv{$svc.$s_actualdstf})
+ '-g', $cv{$svc,$s_svcgid},
+ $cv{$svc,$s_actualsrcf}, $cv{$svc,$s_actualdstf})
if ! $dryrun;
} else {
system(@install, '-m', $cv{$s_filemode}, '-o', $uid, '-g',
- $gid, $cv{$svc.$s_actualsrcf}, $cv{$svc.$s_actualdstf})
+ $gid, $cv{$svc,$s_actualsrcf}, $cv{$svc,$s_actualdstf})
if ! $dryrun;
}
}
@@ -757,15 +764,15 @@
print <<"DATAEND"
$O v$version --- adduser(8) local system additions.
-Copyright (C) 1999-2001, John Zaitseff.
+Copyright (C) 1999-2004, John Zaitseff.
This program, once installed as /usr/local/sbin/adduser.local, is auto-
matically called by the adduser(8) system program on a Debian system.
This script completes the creation of a user account in a system-
dependent way.
-This script is automatically called by adduser with arguments "username
-uid gid homedir". See adduser(8) for more details. In addition, this
+This script is automatically called by adduser with arguments \"username
+uid gid homedir\". See adduser(8) for more details. In addition, this
script may be called manually. In this case, the following syntax
applies:
@@ -775,7 +782,7 @@
--dry-run -n - Pretend to fulfil everything required, without
doing anything.
- --quiet -q - Don't show extraneous information.
+ --quiet -q - Don\'t show extraneous information.
--verbose -v - Show information about what was done (default).
--help -h - Show a brief command-line summary.
--version -V - Show the version of the adduser.local script.
@@ -794,7 +801,7 @@
print <<"DATAEND"
$O v$version --- adduser(8) local system additions.
-Copyright (C) 1999-2001, John Zaitseff.
+Copyright (C) 1999-2004, John Zaitseff.
This program, including associated files, is distributed under the GNU General
Public License. See /usr/share/common-licenses/GPL for more information.
Modified: trunk/examples/adduser.local.conf
===================================================================
--- trunk/examples/adduser.local.conf 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/examples/adduser.local.conf 2005-02-05 12:48:53 UTC (rev 192)
@@ -2,7 +2,7 @@
# /etc/adduser.local.conf: Configuration for /usr/local/sbin/adduser.local #
############################################################################
-# [JNZ] Modified 17-Apr-2001
+# [JNZ] Modified 23-Sep-2004
# This file configures the local system additions to adduser(8) and should
# be modified to suit local conditions.
@@ -39,6 +39,20 @@
filemode = 0644
+#####################
+# USERS service #
+#####################
+
+# Add the user to the Unix group "users". Every user on this machine
+# should be a member of this group. This is already done if the file
+# /etc/adduser.conf includes the setting "USERGROUPS=no". If USERGROUPS
+# is set to "yes", you should uncomment the following three lines.
+
+# service = users
+# group[users] = users
+# addtogroup[users] = true
+
+
###################
# WWW service #
###################
@@ -122,23 +136,60 @@
# ZIP service #
###################
-# Create the directory /mnt/zip/home/$USER, owned by the user. This is
-# only done if /mnt/zip exists and some device is mounted on it at the
+# Create the directory /media/zip/home/$USER, owned by the user. This is
+# only done if /media/zip exists and some device is mounted on it at the
# time the adduser.local script is run.
service = zip
-homedir[zip] = "/mnt/zip"
+homedir[zip] = "/media/zip"
subdir[zip] = "home"
mounted[zip] = true
mkdir[zip] = true
+#####################
+# CDROM service #
+#####################
+
+# Add the user to the Unix group "cdrom" (if it exists). This allows the
+# user to access the CD-ROM hardware on the machine.
+
+service = cdrom
+group[cdrom] = cdrom
+addtogroup[cdrom] = true
+
+
+######################
+# FLOPPY service #
+######################
+
+# Add the user to the Unix group "floppy" (if it exists). This allows the
+# user to access the floppy drive on the machine.
+
+service = floppy
+group[floppy] = floppy
+addtogroup[floppy] = true
+
+
+#####################
+# AUDIO service #
+#####################
+
+# Add the user to the Unix group "audio" (if it exists). This allows the
+# user to access the audio hardware on the machine.
+
+service = audio
+group[audio] = audio
+addtogroup[audio] = true
+
+
###################
# DIP service #
###################
-# Add the user to the Unix group "dip" (if it exists)
+# Add the user to the Unix group "dip" (if it exists). This allows the
+# user to dial out using the local modem.
service = dip
group[dip] = dip
@@ -326,13 +377,13 @@
# the user's name (for whom adduser.local was called). For example,
# if the following were to be specified:
#
-# homedir[svc] = /mnt/zip
+# homedir[svc] = /media/zip
# subdir[svc] = home
# althome[svc] = false
# mkdir[svc] = true
#
# and the user's name (for whom adduser.local was called) was "james",
-# the directory "/mnt/zip/home/james" would be created.
+# the directory "/media/zip/home/james" would be created.
#
# If, on the other hand, the "althome" variable was set to true, the
# subdirectory is used only in conjunction with the home directory; it
@@ -348,7 +399,7 @@
# would be created.
#
# and the user's name (for whom adduser.local was called) was "james",
-# the directory "/mnt/zip/home/james" would be created.
+# the directory "/media/zip/home/james" would be created.
#
# If this variable is not specified, blank is assumed.
#
Added: trunk/examples/examples/adduser.conf
===================================================================
--- trunk/examples/examples/adduser.conf 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/examples/examples/adduser.conf 2005-02-05 12:48:53 UTC (rev 192)
@@ -0,0 +1,68 @@
+# /etc/adduser.conf: `adduser' configuration.
+# See adduser(8) and adduser.conf(5) for full documentation.
+
+# [JNZ] Modified 23-Sep-2004
+
+# Modified from the version shipped with adduser(8) by John Zaitseff.
+# These modifications are released into the public domain.
+
+# The DSHELL variable specifies the default login shell on your
+# system.
+DSHELL=/bin/bash
+
+# The DHOME variable specifies the directory containing users' home
+# directories.
+DHOME=/home
+
+# If GROUPHOMES is "yes", then the home directories will be created as
+# /home/groupname/user.
+GROUPHOMES=no
+
+# If LETTERHOMES is "yes", then the created home directories will have
+# an extra directory - the first letter of the user name. For example:
+# /home/u/user.
+LETTERHOMES=no
+
+# The SKEL variable specifies the directory containing "skeletal" user
+# files; in other words, files such as a sample .profile that will be
+# copied to the new user's home directory when it is created.
+SKEL=/etc/skel
+
+# FIRST_SYSTEM_[GU]ID to LAST_SYSTEM_[GU]ID inclusive is the range for UIDs
+# for dynamically allocated administrative and system accounts/groups.
+FIRST_SYSTEM_UID=100
+LAST_SYSTEM_UID=999
+FIRST_SYSTEM_GID=100
+LAST_SYSTEM_GID=999
+
+# FIRST_[GU]ID to LAST_[GU]ID inclusive is the range of UIDs of dynamically
+# allocated user accounts/groups.
+FIRST_UID=1000
+LAST_UID=29999
+FIRST_GID=1000
+LAST_GID=29999
+
+# The USERGROUPS variable can be either "yes" or "no". If "yes" each
+# created user will be given their own group to use as a default, and
+# their home directories will be g+s. If "no", each created user will
+# be placed in the group whose gid is USERS_GID (see below).
+USERGROUPS=no
+
+# If USERGROUPS is "no", then USERS_GID should be the GID of the group
+# `users' (or the equivalent group) on your system.
+USERS_GID=100
+
+# If QUOTAUSER is set, a default quota will be set from that user with
+# `edquota -p QUOTAUSER newuser'
+QUOTAUSER=""
+
+# If DIR_MODE is set, directories will be created with the specified
+# mode. Otherwise the default mode 0755 will be used.
+DIR_MODE=0755
+
+# If SETGID_HOME is "yes" home directories for users with their own
+# group the setgid bit will be set. This was the default for
+# versions << 3.13 of adduser. Because it has some bad side effects we
+# no longer do this per default. If you want it nevertheless you can
+# still set it here.
+SETGID_HOME=no
Added: trunk/examples/examples/bash.bashrc
===================================================================
--- trunk/examples/examples/bash.bashrc 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/examples/examples/bash.bashrc 2005-02-05 12:48:53 UTC (rev 192)
@@ -0,0 +1,32 @@
+#########################################################################
+# /etc/bash.bashrc: System-wide initialisation file for bash #
+#########################################################################
+
+# This script file is executed by bash(1) for interactive shells.
+#
+# [JNZ] Modified 23-Sep-2004
+#
+# Written by John Zaitseff and released into the public domain.
+
+umask 022
+
+shopt -s checkwinsize expand_aliases
+set -P
+
+# Terminal type modifications
+
+if [ "$TERM" = teraterm ]; then
+ export TERM=linux
+fi
+
+# Set the complete path, as /etc/login.defs does not seem to be consulted
+
+if [ $(id -u) -eq 0 ]; then
+ export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11
+else
+ export PATH=/usr/local/bin:/bin:/usr/bin:/usr/bin/X11:/usr/games
+fi
+
+if [ -d ${HOME}/bin ]; then
+ export PATH=${HOME}/bin:${PATH}
+fi
Added: trunk/examples/examples/profile
===================================================================
--- trunk/examples/examples/profile 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/examples/examples/profile 2005-02-05 12:48:53 UTC (rev 192)
@@ -0,0 +1,31 @@
+#########################################################################
+# /etc/profile: System-wide initialisation file for bash #
+#########################################################################
+
+# This script file is executed by bash(1) for login shells. By default,
+# it executes /etc/bash.bashrc and ~/.bashrc, as well as performing login-
+# only functions.
+#
+# [JNZ] Modified 23-Sep-2004
+#
+# Written by John Zaitseff and released into the public domain.
+
+if [ -r /etc/bash.bashrc ]; then . /etc/bash.bashrc; fi
+if [ -r $HOME/.bashrc ]; then . $HOME/.bashrc; fi
+
+# Display a verse from the Bible using verse(1)
+
+if [ ! -f $HOME/.hushlogin -a ! -f $HOME/.hushverse ]; then
+ if [ $(type -p verse) ]; then
+ echo
+ verse
+ fi
+fi
+
+# Turn on talk(1) messages, unless the user does not want this
+
+if [ ! -f $HOME/.hushlogin -a ! -f $HOME/.hushtalk ]; then
+ mesg y
+fi
+
+echo
Added: trunk/examples/examples/skel/dot.bash_logout
===================================================================
--- trunk/examples/examples/skel/dot.bash_logout 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/examples/examples/skel/dot.bash_logout 2005-02-05 12:48:53 UTC (rev 192)
@@ -0,0 +1,10 @@
+#########################################################################
+# .bash_logout: Log-out script for bash #
+#########################################################################
+
+# This script file is executed by bash(1) when the login shell terminates.
+# By default, no action is taken.
+#
+# [JNZ] Modified 23-Sep-2004
+#
+# Written by John Zaitseff and released into the public domain.
Added: trunk/examples/examples/skel/dot.bash_profile
===================================================================
--- trunk/examples/examples/skel/dot.bash_profile 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/examples/examples/skel/dot.bash_profile 2005-02-05 12:48:53 UTC (rev 192)
@@ -0,0 +1,10 @@
+#########################################################################
+# .bash_profile: Personal initialisation file for bash #
+#########################################################################
+
+# This script file is executed by bash(1) for login shells. By default,
+# it does nothing, as ~/.bashrc is already sourced by /etc/profile.
+#
+# [JNZ] Modified 23-Sep-2004
+#
+# Written by John Zaitseff and released into the public domain.
Added: trunk/examples/examples/skel/dot.bashrc
===================================================================
--- trunk/examples/examples/skel/dot.bashrc 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/examples/examples/skel/dot.bashrc 2005-02-05 12:48:53 UTC (rev 192)
@@ -0,0 +1,62 @@
+#########################################################################
+# .bashrc: Personal initialisation file for bash #
+#########################################################################
+
+# This file is executed by interactive shells (ie, shells for which you
+# are able to provide keyboard input). It is the best place to put shell
+# aliases, etc.
+#
+# [JNZ] Modified 23-Sep-2004
+#
+# Written by John Zaitseff and released into the public domain.
+
+
+# Variable settings for your convenience
+
+export LANG=en_AU.UTF-8 # We are in Australia
+export LC_ALL=en_AU.UTF-8
+export TIME_STYLE=$'+%b %e %Y\n%b %e %H:%M' # As used by ls(1)
+export EDITOR=emacs # Everyone's favourite editor
+export CVSROOT=:ext:cvs.zap.org.au:/data/cvs
+export CVS_RSH=ssh
+
+# Useful aliases, defined whether or not this shell is interactive
+
+alias cls=clear
+alias ls="ls -v"
+alias dir="ls -laF"
+alias lock="clear; vlock -a; clear"
+alias e="emacs -nw"
+
+
+# Run the following only if this shell is interactive
+
+if [ "$PS1" ]; then
+
+ export IGNOREEOF=5 # Disallow accidental Ctrl-D
+
+ # Set options, depending on terminal type
+ if [ -z "$TERM" -o "$TERM" = "dumb" ]; then
+ # Not a very smart terminal
+ export PS1="[ \u@\h | \w ] "
+ else
+ # Assume a smart VT100-based terminal with colour
+
+ # Make sure the terminal is in UTF-8 mode. This is a hack!
+ /bin/echo -n -e '\033%G'
+
+ # Make ls(1) use colour in its listings
+ if [ -x /usr/bin/dircolors ]; then
+ alias ls="ls -v --color=auto"
+ eval $(/usr/bin/dircolors --sh)
+ fi
+
+ # Set the terminal prompt
+ if [ $(id -u) -ne 0 ]; then
+ export PS1="\[\e[7m\][ \u@\h | \w ]\[\e[0m\] "
+ else
+ # Root user gets a nice RED prompt!
+ export PS1="\[\e[41;30m\][ \u@\h | \w ]\[\e[0m\] "
+ fi
+ fi
+fi
Added: trunk/examples/examples/skel.other/index.html
===================================================================
--- trunk/examples/examples/skel.other/index.html 2005-02-05 12:42:37 UTC (rev 191)
+++ trunk/examples/examples/skel.other/index.html 2005-02-05 12:48:53 UTC (rev 192)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+
+<!-- This document is a place-holder for the home page until the user
+ gets around to replacing it with his or her own.
+
+ [JNZ] Modified 23-Sep-2004
+
+ Written by John Zaitseff and released into the public domain. -->
+
+<head>
+ <title>My Home Page</title>
+ <meta name="Author" content="The user">
+ <meta name="Description" content="The user's default home page">
+ <meta name="Keywords" content="home, homepage, default">
+ <meta name="Language" content="English">
+ <link rev="made" href="mailto:webmaster@zap.org.au">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta http-equiv="Content-Language" content="en">
+</head>
+<body text="#000000" bgcolor="#FFFFFF"
+ link="#0000FF" vlink="#330066" alink="#FF0000">
+
+<h1>My Home Page</h1>
+
+<p>Welcome to my home page on the World Wide Web! This page, like many
+others, is under construction. I’ll be replacing this page
+soon… I hope.</p>
+
+</body>
+</html>