#! /usr/bin/perl -w

#----------------------------------------------------------------------
# Copyright 1999-2003 Mitel Networks Corporation
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
#----------------------------------------------------------------------

use strict;

sub usage
{
    my $msg = shift;
    warn("$msg\n") if $msg;
    die("Usage: $0: user userid descr home_dir shell\n");
}

my $user = shift || usage("Must give username param");
my $uid = shift || usage("Must give userid param");
my $user_desc = shift || usage("Must give user desc param");
my $home = shift || usage("Must give home param");
my $shell = shift || usage("Must give shell param");
my @uid_opts = ("-u", $uid);

use User::pwent;
use User::grent;

if (my $pw = getpwnam($user))
{
    my $euid = $pw->uid;
    exit 0 if $euid == $uid;
    warn ("Users $user exists but has uid of $euid - should be $uid\n");
    exit 0;
}

if (my $pw = getpwuid($uid))       
{
    my $name = $pw->name;
    warn "User id of $uid is already taken by user $name\n";
    warn "Falling back to a system chosen uid\n";
    @uid_opts = ("-r");
}

if (my $pw = getgrgid($uid))       
{
    my $name = $pw->name;
    warn "Group id of $uid is already taken by user $name\n";
}

# We can now go ahead and create the user and group

die("Failed to create user $user\n") if
    system("/usr/sbin/useradd",
		@uid_opts,
		"-d", $home,
		"-M",
		"-s", $shell,
		"-c", $user_desc,
		$user);
exit 0;
