#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License"). You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2004 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#ident "%Z%%M% %I% %E% SMI"
#
require 5.005;
use strict;
use locale;
use Errno;
use Fcntl;
#
# Print a usage message and exit.
#
sub usage
{
my (@msg) = @_;
" %s [-n] [-f filename] [-p projid [-o]] [-c comment]\n".
" %s [-U user[,user...]] [-G group[,group...]]\n".
" %s [-K name[=value[,value...]]] project\n"),
exit(2);
}
#
# Print a list of error messages and exit.
#
sub error
{
foreach my $err (@_) {
}
exit($exit);
}
#
# Main routine of script.
#
# Set the message locale.
#
# Process command options and do some initial command-line validity checking.
my $projfile = &PROJF_PATH;
my $opt_n;
my $opt_c;
my $opt_o;
my $opt_p;
my $opt_U;
my $opt_G;
my @opt_K;
"n" => \$opt_n,
"c=s" => \$opt_c,
"o" => \$opt_o,
"p=s" => \$opt_p,
"U=s" => \$opt_U,
"G=s" => \$opt_G,
my $maxpjid = 99;
my $tmpprojf;
# Fabricate an unique temporary filename.
my $pfh;
if (defined($opt_n)) {
} else {
}
my $pf;
my $tmperr;
my $ret;
my $err;
# Read the project file. sysopen() is used so we can control the file mode.
$pf = [];
$mode = 0644;
} else {
}
} else {
if ($ret != 0) {
}
close($pfh);
foreach (@$pf) {
}
}
my $proj = {};
$proj->{'userlist'} = [];
$proj->{'grouplist'} = [];
$proj->{'attributelist'} = [];
# Update the record as appropriate.
$err = [];
if ($ret != 0) {
} else {
if (!defined($opt_n)) {
if ($ret != 0) {
}
}
}
# Apply any changes due to options.
if (defined($opt_p)) {
if ($ret != 0) {
} else {
if (!defined($opt_n)) {
projent_validate_projid($value, {});
if ($ret != 0) {
}
}
if ($ret != 0) {
}
}
}
}
if (defined($opt_c)) {
if ($ret != 0) {
} else {
}
}
if (defined($opt_U)) {
my @sortlist;
{ 'allowspaces' => 1 });
if ($ret != 0) {
} else {
}
}
if (defined($opt_G)) {
my @sortlist;
{ 'allowspaces' => 1 });
if ($ret != 0) {
} else {
}
}
my $attrib;
my @attriblist;
my @sortlist;
# Support multiple instances of -K.
{'allowunits' => 1});
if ($ret != 0) {
} else {
push(@attriblist, @$list);
}
}
if (@attriblist) {
}
# Validate project entry changes.
if (!defined($opt_n)) {
if ($ret != 0) {
}
}
if (@$err) {
}
# Write out the project file.
umask(0000);
close($pfh);
unlink($tmpprojf);
$tmpprojf, $!]);
}
unlink($tmpprojf);
}
exit(0);