#!/tools/ns/bin/perl5.004 -- # DO NOT EDIT THIS FILE! You must instead go to http://despot.mozilla.org/, and # tweak things from there. $mode{'95'} = 'Open'; $branch{'95'} = 'HEAD'; $fullname{'95'} = '2-D Graphics'; $mode{'52'} = 'Open'; $branch{'52'} = 'HEAD'; $fullname{'52'} = 'Aurora/RDF BE'; $mode{'53'} = 'Open'; $branch{'53'} = 'HEAD'; $fullname{'53'} = 'Berkeley DB'; $mode{'55'} = 'Open'; $branch{'55'} = 'HEAD'; $fullname{'55'} = 'Build Config'; $mode{'164'} = 'Restricted'; $branch{'164'} = 'HEAD'; $fullname{'164'} = 'chimera'; $blessed{'164'} = ['brendan%mozilla.org',]; $super{'164'} = ['sfraser%netscape.com','pinkerton%netscape.com','ben%netscape.com','hyatt%netscape.com',]; $mode{'146'} = 'Restricted'; $branch{'146'} = 'NSPRPUB_PRE_4_2_CLIENT_BRANCH'; $fullname{'146'} = 'Client NSPR'; $blessed{'146'} = ['sfraser%netscape.com','sdagley%netscape.com','gordon%netscape.com','beard%netscape.com',]; $super{'146'} = ['wtc%netscape.com','seawood%netscape.com','leaf%mozilla.org',]; $mode{'96'} = 'Open'; $branch{'96'} = 'HEAD'; $fullname{'96'} = 'Clipping and Compositing'; $mode{'56'} = 'Open'; $branch{'56'} = 'HEAD'; $fullname{'56'} = 'Composer'; $mode{'4'} = 'Open'; $branch{'4'} = 'HEAD'; $fullname{'4'} = 'default'; $defaultid = '4'; $mode{'3'} = 'Closed'; $branch{'3'} = 'HEAD'; $fullname{'3'} = 'despotaccess'; $blessed{'3'} = []; $super{'3'} = ['despotdaemon%netscape.com',]; $mode{'59'} = 'Closed'; $branch{'59'} = 'HEAD'; $fullname{'59'} = 'Directory SDK'; $blessed{'59'} = []; $super{'59'} = ['leif%ogre.com','dmose%netscape.com','mhein%sun.com','mcs%netscape.com',]; $mode{'103'} = 'Open'; $branch{'103'} = 'HEAD'; $fullname{'103'} = 'Document Object Model'; $mode{'46'} = 'Open'; $branch{'46'} = 'HEAD'; $fullname{'46'} = 'ef'; $mode{'101'} = 'Open'; $branch{'101'} = 'HEAD'; $fullname{'101'} = 'Embeddable Web Browser'; $mode{'49'} = 'Open'; $branch{'49'} = 'HEAD'; $fullname{'49'} = 'GTK'; $mode{'144'} = 'Open'; $branch{'144'} = 'HEAD'; $fullname{'144'} = 'GTK Embedding Widget'; $mode{'62'} = 'Open'; $branch{'62'} = 'HEAD'; $fullname{'62'} = 'HTML to Text/PostScript Translation'; $mode{'67'} = 'Open'; $branch{'67'} = 'HEAD'; $fullname{'67'} = 'I18N Library'; $mode{'64'} = 'Open'; $branch{'64'} = 'HEAD'; $fullname{'64'} = 'Image Handling: JPEG'; $mode{'155'} = 'Open'; $branch{'155'} = 'HEAD'; $fullname{'155'} = 'Image Handling: MNG'; $mode{'65'} = 'Open'; $branch{'65'} = 'HEAD'; $fullname{'65'} = 'Image Handling: PNG'; $mode{'63'} = 'Open'; $branch{'63'} = 'HEAD'; $fullname{'63'} = 'ImageLib'; $mode{'69'} = 'Open'; $branch{'69'} = 'HEAD'; $fullname{'69'} = 'Java and JS Capability-Based Security'; $mode{'130'} = 'Open'; $branch{'130'} = 'HEAD'; $fullname{'130'} = 'Java APIs for DOM'; $mode{'127'} = 'Open'; $branch{'127'} = 'HEAD'; $fullname{'127'} = 'Java APIs to WebShell'; $mode{'68'} = 'Open'; $branch{'68'} = 'HEAD'; $fullname{'68'} = 'Java Stubs'; $mode{'128'} = 'Open'; $branch{'128'} = 'HEAD'; $fullname{'128'} = 'Java to XPCOM Bridge'; $mode{'133'} = 'Open'; $branch{'133'} = 'HEAD'; $fullname{'133'} = 'Java Utility Classes'; $mode{'129'} = 'Open'; $branch{'129'} = 'HEAD'; $fullname{'129'} = 'Java-Implemented Plugins'; $mode{'70'} = 'Open'; $branch{'70'} = 'HEAD'; $fullname{'70'} = 'JavaScript'; $mode{'71'} = 'Open'; $branch{'71'} = 'HEAD'; $fullname{'71'} = 'JavaScript Debugger'; $mode{'114'} = 'Open'; $branch{'114'} = 'HEAD'; $fullname{'114'} = 'js-tests'; $mode{'72'} = 'Open'; $branch{'72'} = 'HEAD'; $fullname{'72'} = 'LiveConnect'; $mode{'136'} = 'Closed'; $branch{'136'} = 'HEAD'; $fullname{'136'} = 'Locked-Content'; $blessed{'136'} = []; $super{'136'} = ['hyatt%netscape.com',]; $mode{'123'} = 'Open'; $branch{'123'} = 'HEAD'; $fullname{'123'} = 'Mail/News'; $mode{'165'} = 'Open'; $branch{'165'} = 'HEAD'; $fullname{'165'} = 'MathML'; $mode{'124'} = 'Open'; $branch{'124'} = 'HEAD'; $fullname{'124'} = 'MIME'; $mode{'157'} = 'Open'; $branch{'157'} = 'HEAD'; $fullname{'157'} = 'Movemail'; $mode{'112'} = 'Open'; $branch{'112'} = 'HEAD'; $fullname{'112'} = 'Mozilla Tools'; $mode{'19'} = 'Open'; $branch{'19'} = 'HEAD'; $fullname{'19'} = 'mozilla-toplevel'; $mode{'147'} = 'Open'; $branch{'147'} = 'HEAD'; $fullname{'147'} = 'Mstone'; $mode{'77'} = 'Open'; $branch{'77'} = 'HEAD'; $fullname{'77'} = 'NetLib'; $mode{'102'} = 'Open'; $branch{'102'} = 'HEAD'; $fullname{'102'} = 'New HTML Parser'; $mode{'100'} = 'Open'; $branch{'100'} = 'HEAD'; $fullname{'100'} = 'New HTML Style System'; $mode{'98'} = 'Open'; $branch{'98'} = 'HEAD'; $fullname{'98'} = 'New Layout Engine'; $mode{'122'} = 'Open'; $branch{'122'} = 'HEAD'; $fullname{'122'} = 'News'; $mode{'78'} = 'Restricted'; $branch{'78'} = 'HEAD'; $fullname{'78'} = 'NSPR'; $blessed{'78'} = ['sfraser%netscape.com','sdagley%netscape.com','gordon%netscape.com','beard%netscape.com',]; $super{'78'} = ['srinivas%netscape.com','seawood%netscape.com','wtc%netscape.com',]; $mode{'163'} = 'Restricted'; $branch{'163'} = 'NSS_3_3_BRANCH'; $fullname{'163'} = 'NSS Stable Release Branch'; $blessed{'163'} = []; $super{'163'} = ['tfox%netscape.com','sonja.mirtitsch%sun.com','nicolson%netscape.com','nelsonb%netscape.com','kirk.erickson%sun.com','jpierre%netscape.com','javi%netscape.com','ian.mcgreer%sun.com','glen.beasley%sun.com','ddrinan%netscape.com','bishakhabanerjee%netscape.com','wtc%netscape.com','relyea%netscape.com',]; $mode{'159'} = 'Open'; $branch{'159'} = 'HEAD'; $fullname{'159'} = 'NSS Trunk'; $mode{'162'} = 'Open'; $branch{'162'} = 'HEAD'; $fullname{'162'} = 'P3P'; $mode{'111'} = 'Open'; $branch{'111'} = 'HEAD'; $fullname{'111'} = 'PerlConnect'; $mode{'113'} = 'Open'; $branch{'113'} = 'HEAD'; $fullname{'113'} = 'Photon'; $mode{'81'} = 'Open'; $branch{'81'} = 'HEAD'; $fullname{'81'} = 'Plugins'; $mode{'82'} = 'Open'; $branch{'82'} = 'HEAD'; $fullname{'82'} = 'Preferences'; $mode{'120'} = 'Open'; $branch{'120'} = 'HEAD'; $fullname{'120'} = 'Profile Manager'; $mode{'83'} = 'Open'; $branch{'83'} = 'HEAD'; $fullname{'83'} = 'Progress Window'; $mode{'161'} = 'Open'; $branch{'161'} = 'HEAD'; $fullname{'161'} = 'Qt-based gfx and widget'; $mode{'84'} = 'Open'; $branch{'84'} = 'HEAD'; $fullname{'84'} = 'Registry'; $mode{'143'} = 'Open'; $branch{'143'} = 'HEAD'; $fullname{'143'} = 'Remote XPCOM'; $mode{'138'} = 'Open'; $branch{'138'} = 'HEAD'; $fullname{'138'} = 'Rhino'; $mode{'145'} = 'Restricted'; $branch{'145'} = 'HEAD'; $fullname{'145'} = 'security'; $blessed{'145'} = ['jgmyers%netscape.com','jaggernaut%netscape.com','cotter%netscape.com','cls%seawood.org','bryner%netscape.com','scc%mozilla.org','alecf%netscape.com',]; $super{'145'} = ['wtc%netscape.com','tfox%netscape.com','sonja.mirtitsch%sun.com','rangansen%netscape.com','nicolson%netscape.com','nelsonb%netscape.com','kirk.erickson%sun.com','kaie%netscape.com','jpierre%netscape.com','javi%netscape.com','ian.mcgreer%sun.com','glen.beasley%sun.com','chrisk%netscape.com','bishakhabanerjee%netscape.com','thayes%netscape.com','relyea%netscape.com','ddrinan%netscape.com',]; $mode{'151'} = 'Open'; $branch{'151'} = 'HEAD'; $fullname{'151'} = 'Security - Mozilla PSM Glue'; $mode{'86'} = 'Open'; $branch{'86'} = 'HEAD'; $fullname{'86'} = 'Security Stubs'; $mode{'110'} = 'Open'; $branch{'110'} = 'HEAD'; $fullname{'110'} = 'Silent Download'; $mode{'115'} = 'Open'; $branch{'115'} = 'HEAD'; $fullname{'115'} = 'small-devices'; $mode{'87'} = 'Open'; $branch{'87'} = 'HEAD'; $fullname{'87'} = 'SmartUpdate'; $mode{'160'} = 'Open'; $branch{'160'} = 'HEAD'; $fullname{'160'} = 'String'; $mode{'154'} = 'Open'; $branch{'154'} = 'HEAD'; $fullname{'154'} = 'tools'; $mode{'158'} = 'Open'; $branch{'158'} = 'HEAD'; $fullname{'158'} = 'URI Loader'; $mode{'156'} = 'Open'; $branch{'156'} = 'HEAD'; $fullname{'156'} = 'ViXEn'; $mode{'134'} = 'Open'; $branch{'134'} = 'HEAD'; $fullname{'134'} = 'Widgets'; $mode{'121'} = 'Open'; $branch{'121'} = 'HEAD'; $fullname{'121'} = 'Xlib-based gfx + widget'; $mode{'88'} = 'Open'; $branch{'88'} = 'HEAD'; $fullname{'88'} = 'XML'; $mode{'141'} = 'Open'; $branch{'141'} = 'HEAD'; $fullname{'141'} = 'xmlterm'; $mode{'90'} = 'Open'; $branch{'90'} = 'HEAD'; $fullname{'90'} = 'XP File Handling'; $mode{'137'} = 'Open'; $branch{'137'} = 'HEAD'; $fullname{'137'} = 'XPApps'; $mode{'89'} = 'Open'; $branch{'89'} = 'HEAD'; $fullname{'89'} = 'XPCOM'; $mode{'118'} = 'Open'; $branch{'118'} = 'HEAD'; $fullname{'118'} = 'XPConnect'; $mode{'117'} = 'Open'; $branch{'117'} = 'HEAD'; $fullname{'117'} = 'XPIDL'; $mode{'150'} = 'Open'; $branch{'150'} = 'HEAD'; $fullname{'150'} = 'XPInstall'; $mode{'106'} = 'Open'; $branch{'106'} = 'HEAD'; $fullname{'106'} = 'XPToolkit'; $mode{'140'} = 'Open'; $branch{'140'} = 'HEAD'; $fullname{'140'} = 'XSLT Processor'; $mode{'135'} = 'Open'; $branch{'135'} = 'HEAD'; $fullname{'135'} = 'xul.css'; $mode{'93'} = 'Open'; $branch{'93'} = 'HEAD'; $fullname{'93'} = 'Zlib'; sub GetT { ($b,$_) = (@_); if ($b eq 'HEAD') { if (m:^CVSROOT/commitcheck\.pl$:) {return '3';} if (m:^CVSROOT/passwd$:) {return '3';} if (m:^mozilla/security/coreconf/.*$:) {return '145';} if (m:^mozilla/security/jss/.*$:) {return '145';} if (m:^mozilla/security/nss/.*$:) {return '145';} if (m:^mozilla/[^/]*$:) {return '19';} if (m:^mozilla/gfx/src/xlib/.*$:) {return '121';} if (m:^mozilla/widget/src/xlib/.*$:) {return '121';} if (m:^mozilla/ef/.*$:) {return '46';} if (m:^mozilla/gfx/src/gtk/.*$:) {return '49';} if (m:^mozilla/widget/src/gtk/.*$:) {return '49';} if (m:^mozilla/widget/timer/src/unix/gtk$:) {return '49';} if (m:^mozilla/rdf/.*$:) {return '52';} if (m:^mozilla/dbm/.*$:) {return '53';} if (m:^mozilla/build/.*$:) {return '55';} if (m:^mozilla/config/.*$:) {return '55';} if (m:^mozilla/l10n/.*$:) {return '55';} if (m:^mozilla/editor$:) {return '56';} if (m:^mozilla/directory/buildsdk\.txt$:) {return '59';} if (m:^mozilla/directory/c-sdk/.*$:) {return '59';} if (m:^mozilla/directory/ldapsdk\.mak$:) {return '59';} if (m:^mozilla/directory/ldapsdk\.mk$:) {return '59';} if (m:^mozilla/directory/Makefile$:) {return '59';} if (m:^gfx/src/ps/.*$:) {return '62';} if (m:^mozilla/modules/libimg/.*$:) {return '63';} if (m:^mozilla/modules/libutil/.*$:) {return '63';} if (m:^mozilla/intl/.*$:) {return '67';} if (m:^mozilla/modules/oji/.*$:) {return '68';} if (m:^mozilla/nav-java/.*$:) {return '68';} if (m:^mozilla/sun-java/.*$:) {return '68';} if (m:^mozilla/caps/.*$:) {return '69';} if (m:^js/src/*\.c$:) {return '70';} if (m:^js/src/*\.h$:) {return '70';} if (m:^mozilla/extensions/jsd/.*$:) {return '71';} if (m:^mozilla/js/jsd/.*$:) {return '71';} if (m:^js/src/liveconnect/.*$:) {return '72';} if (m:^mozilla/netwerk/.*$:) {return '77';} if (m:^mozilla/nsprpub/.*$:) {return '78';} if (m:^mozilla/modules/plugin/.*$:) {return '81';} if (m:^mozilla/modules/libpref/.*$:) {return '82';} if (m:^mozilla/modules/progress/.*$:) {return '83';} if (m:^mozilla/modules/libreg/.*$:) {return '84';} if (m:^mozilla/modules/security/.*$:) {return '86';} if (m:^mozilla/modules/softupdt/.*$:) {return '87';} if (m:^mozilla/content/xml/.*$:) {return '88';} if (m:^mozilla/expat/.*$:) {return '88';} if (m:^mozilla/extensions/xmlextras/.*$:) {return '88';} if (m:^mozilla/xpcom/.*$:) {return '89';} if (m:^xpcom/io$:) {return '90';} if (m:^mozilla/modules/zlib/.*$:) {return '93';} if (m:^mozilla/gfx/public/.*$:) {return '95';} if (m:^mozilla/gfx/src/windows/.*$:) {return '95';} if (m:^mozilla/view/.*$:) {return '96';} if (m:^mozilla/layout/.*$:) {return '98';} if (m:^modules/libimg/mng/.*$:) {return '155';} if (m:^modules/libimg/mngcom/.*$:) {return '155';} if (m:^mozilla/embedding/.*$:) {return '101';} if (m:^mozilla/webshell/.*$:) {return '101';} if (m:^mozilla/htmlparser/.*$:) {return '102';} if (m:^mozilla/dom/.*$:) {return '103';} if (m:^mozilla/js/rhino/.*$:) {return '138';} if (m:^mozilla/xpfe$:) {return '137';} if (m:^mozilla/js/tests$:) {return '114';} if (m:^js/src/perlconnect$:) {return '111';} if (m:^mozilla/silentdl/.*$:) {return '110';} if (m:^mozilla/extensions/transformiix/.*$:) {return '140';} if (m:^base/src/photon/.*$:) {return '113';} if (m:^gfx/src/photon/.*$:) {return '113';} if (m:^widget/src/photon/.*$:) {return '113';} if (m:^mozilla/widget/public/.*$:) {return '134';} if (m:^mozilla/profile$:) {return '120';} if (m:^mozilla/tools/.*$:) {return '112';} if (m:^xpcom/typelib$:) {return '117';} if (m:^js/src/xpconnect$:) {return '118';} if (m:^xpcom/reflect/xptcall$:) {return '118';} if (m:^xpcom/reflect/xptinfo$:) {return '118';} if (m:^mozilla/mailnews/news/.*$:) {return '122';} if (m:^mozilla/mailnews/[^/]*$:) {return '123';} if (m:^mozilla/mailnews/mime/[^/]*$:) {return '124';} if (m:^mozilla/java/xpcom/.*$:) {return '128';} if (m:^mozilla/java/plugins/.*$:) {return '129';} if (m:^mozilla/java/webclient/.*$:) {return '127';} if (m:^mozilla/java/dom/.*$:) {return '130';} if (m:^mozilla/java/util/.*$:) {return '133';} if (m:^mozilla/extensions/xmlterm/.*$:) {return '141';} if (m:^xpcom/remote$:) {return '143';} if (m:^embedding/browser/gtk$:) {return '144';} if (m:^mozilla/mstone/.*$:) {return '147';} if (m:^mozilla/xpinstall/.*$:) {return '150';} if (m:^mozilla/extensions/psm-glue/.*$:) {return '151';} if (m:^mozilla/extensions/vixen/.*$:) {return '156';} if (m:^mozilla/mailnews/movemail$:) {return '157';} if (m:^mozilla/uriloader/.*$:) {return '158';} if (m:^mozilla/string/.*$:) {return '160';} if (m:^mozilla/gfx/src/qt/.*$:) {return '161';} if (m:^mozilla/widget/src/qt/.*$:) {return '161';} if (m:^mozilla/extensions/p3p/.*$:) {return '162';} if (m:^mozilla/chimera/.*$:) {return '164';} } if ($b eq 'NSPRPUB_PRE_4_2_CLIENT_BRANCH') { if (m:^mozilla/nsprpub/.*$:) {return '146';} } if ($b eq 'NSS_3_3_BRANCH') { if (m:^mozilla/security/coreconf/.*$:) {return '163';} if (m:^mozilla/security/nss/.*$:) {return '163';} } return ''; } $debug = 0; $origrepository = shift(@ARGV); @files = @ARGV; $envcvsroot = $ENV{'CVSROOT'}; open( REP, "; chop($repository); close(REP); $repository =~ s:^$envcvsroot/::; $doit = 0; $| = 1; if( $debug){ print STDERR "----------------------------------------------\n"; print STDERR "files: @files\n"; print STDERR "origrepository: $origrepository\n"; print STDERR " repository: $repository\n"; print STDERR "----------------------------------------------\n"; } open(ENT, " ){ chop; ($d,$fn,$rev,$mod_time,$sticky,$tag) = split(/\//); if ($tag =~ /^T(.*)$/) { $fbranch{$fn} = $1; } } close ENT; foreach $f (@files) { $b = ""; if (defined $fbranch{$f}) {$b = $fbranch{$f};} if ($b eq "") {$b = "HEAD";} $t = GetT($b, "$repository/$f"); if ($debug) { print STDERR "GetT returned '$t' for '$repository/$f' branch '$b'\n"; } if ($t eq "") { $t = $defaultid; } if (!defined $mode{$t} || $mode{$t} eq "Open") { next; } if ($debug) { print STDERR "Checking twig $t\n"; } # OK, we have a match. See if we're allowed to checkin here. if ($username eq "") { $username = $ENV{"CVS_USER"} || getlogin || (getpwuid($<))[0] || "nobody"; if ($debug) { print STDERR "Username is $username\n"; print STDERR "getlogin returns " . getlogin . "\n"; print STDERR '(getpwuid($<))[0] returns ' . (getpwuid($<))[0] . "\n"; print STDERR "Environment:\n"; foreach $key (sort(keys %ENV)) { print STDERR $key, '=', $ENV{$key}, "\n"; } } } $ok = 0; $s = $super{$t}; foreach $u (@$s) { if ($debug) { print STDERR "Checking against super $u\n"; } if ($u eq $username) { $ok = 1; break; } } if ($mode{$t} eq "Restricted") { my $b = $blessed{$t}; foreach $u (@$b) { if ($debug) { print STDERR "Checking against blessed $u\n"; } if ($u eq $username) { $ok = 1; break; } } } if (!$ok) { print STDERR "You may not check into partition $fullname{$t}\n"; print STDERR "the file $repository/$f on branch $b\n"; print STDERR "If you think you should be allowed to, send mail to\n"; print STDERR "one of the below people:\n"; $s = $super{$t}; foreach $u (@$s) { $u =~ s/%/@/; print STDERR " $u\n"; } exit 1; } } exit 0;