#!/usr/bin/perl -w # # $FreeBSD$ # # Access control lists for CVS. dgg@ksr.com (David G. Grubbs) # # ==== FORMAT OF THE avail FILE: # # The avail file determines whether you may commit files. It contains lines # read from top to bottom, keeping track of a single "bit". The "bit" # defaults to "on". It can be turned "off" by "unavail" lines and "on" by # "avail" lines. ==> Last one counts. # # Any line not beginning with "avail" or "unavail" is ignored. # # Lines beginning with "avail" or "unavail" are assumed to be '|'-separated # triples: (All spaces and tabs are ignored in a line.) # # {avail.*,unavail.*} [| user,user,... [| repos,repos,...]] # # 1. String starting with "avail" or "unavail". # 2. Optional, comma-separated list of usernames. # 3. Optional, comma-separated list of repository pathnames. # These are pathnames relative to $CVSROOT. They can be directories or # filenames. A directory name allows access to all files and # directories below it. # # Example: (Text from the ';;' rightward may not appear in the file.) # # unavail ;; Make whole repository unavailable. # avail|dgg ;; Except for user "dgg". # avail|fred, john|bin/ls ;; Except when "fred" or "john" commit to # ;; the module whose repository is "bin/ls" # # PROGRAM LOGIC: # # CVS passes to @ARGV an absolute directory pathname (the repository # appended to your $CVSROOT variable), followed by a list of filenames # within that directory. # # We walk through the avail file looking for a line that matches both # the username and repository. # # A username match is simply the user's name appearing in the second # column of the avail line in a space-or-comma separate list. # # A repository match is either: # - One element of the third column matches $ARGV[0], or some # parent directory of $ARGV[0]. # - Otherwise *all* file arguments ($ARGV[1..$#ARGV]) must be # in the file list in one avail line. # - In other words, using directory names in the third column of # the avail file allows committing of any file (or group of # files in a single commit) in the tree below that directory. # - If individual file names are used in the third column of # the avail file, then files must be committed individually or # all files specified in a single commit must all appear in # third column of a single avail line. # # Additional (2001/11/16): I've added a group function for labelling # groups of users. To define a group add a line in the avail file of # the form: # group|grpname1|joe,fred,bob # group|grpname2|pete,:grpname1,simon # group|grpname2|sid,:grpname2,mike # group|anothergroup|!filename/containing/listofusers # # The group name can be used in any place a user name could be used in # an avail or unavail line. Just precede the group name with a ':' # character. In the example above you'll note that you can define a # group more than once. Each definition overrides the previous one, # but can include itself to add to it. # # In place of a username in any of the above rules, you can specify # a group name preceeded with a ':' character, or a filename preceeded # with a '!' character. In the case of a file it is assumed relative to # $CVSROOT/CVSROOT/ unless it started witha leading '/'. All blank lines # and comments are ignored, and the remaining lines are treated as one # username per line. use strict; use lib $ENV{CVSROOT}; use CVSROOT::cfg; my $CVSROOT = $ENV{'CVSROOT'} || die "Can't determine \$CVSROOT!"; my $debug = $cfg::DEBUG; my %GROUPS; # List of committer groups my $exit_val = 0; # Good Exit value my $universal_off = 0; ####################################### # process any variable=value switches ####################################### my $die = ''; eval "print STDERR \$die='Unknown parameter $1\n' if !defined \$$1; \$$1=\$';" while ($ARGV[0] =~ /^(\w+)=/ && shift(@ARGV)); exit 255 if $die; ####################################### # Work out where in the repo we're at. ####################################### my $repos = shift; $repos =~ s:^$CVSROOT/::; grep($_ = $repos . '/' . $_, @ARGV); print "$$ Repos: $repos\n","$$ ==== ",join("\n$$ ==== ",@ARGV),"\n" if $debug; ####################################### # Check that the user has permission. ####################################### # It is ok for the avail file not to exist. exit 0 unless -e $cfg::AVAIL_FILE; # Suck in a list of committer groups from the avail file. open (AVAIL, $cfg::AVAIL_FILE) || die "Can't open $cfg::AVAIL_FILE!\n"; while () { next unless /^group\|/; chomp; my ($keywrd, $gname, $members) = split /\|/, $_; $GROUPS{$gname} = expand_users($members); } close(AVAIL); open (AVAIL, $cfg::AVAIL_FILE) || die "Can't open $cfg::AVAIL_FILE!\n"; while () { chomp; next if /^\s*\#/; next if /^\s*$/; next if /^group\|/; print "--------------------\n" if $debug; my $rule = $_; my ($flagstr, $u, $m) = split(/[\s,]*\|[\s,]*/, $rule); # Skip anything not starting with "avail" or "unavail" and complain. if ($flagstr !~ /^avail/ && $flagstr !~ /^unavail/) { print "Bad avail line: $rule\n"; next; } # Set which bit we are playing with. ('0' is OK == Available). my $flag = (($& eq "avail") ? 0 : 1); # If we find a "universal off" flag (i.e. a simple "unavail") # remember it my $universal_off = 1 if ($flag && !$u && !$m); # Expand any group names into a full user list. $u = expand_users($u); # $cfg::COMMITTER considered "in user list" if actually in list # or is NULL my $in_user = (!$u || grep ($_ eq $cfg::COMMITTER, split(/[\s,]+/,$u))); print "$$ \$cfg::COMMITTER ($cfg::COMMITTER) in user list: $rule\n" if $debug && $in_user; # Module matches if it is a NULL module list in the avail line. # If module list is not null, we check every argument combination. my $in_repo = (!$m || 0); if (!$in_repo) { my @tmp = split(/[\s,]+/,$m); for my $j (@tmp) { # If the repos from avail is a parent(or equal) # dir of $repos, OK $in_repo = 1, last if ($repos eq $j || $repos =~ /^$j\//); } if (!$in_repo) { #$in_repo = 1; for my $j (@ARGV) { last if !($in_repo = grep ($_ eq $j, @tmp)); } } } print "$$ \$repos($repos) in repository list: $rule\n" if $debug && $in_repo; print "$$ Expanded user list: $u\n" if $debug; $exit_val = $flag if ($in_user && $in_repo); print "$$ ==== \$exit_val = $exit_val\n$$ ==== \$flag = $flag\n" if $debug; } close(AVAIL); print "$$ ==== \$exit_val = $exit_val\n" if $debug; print "**** Access denied: Insufficient Karma ($cfg::COMMITTER|$repos)\n" if $exit_val; print "**** Access allowed: Personal Karma exceeds Environmental Karma.\n" if $debug && $universal_off && !$exit_val; exit($exit_val); # Expand a user specification containing group names and deltas into # a definitive list of users. sub expand_users { my $user_list = shift || ""; # Parse the members. my @members = split /,/, $user_list; my %members; foreach my $m (@members) { if ($m =~ s/^://) { if (!defined($GROUPS{$m})) { warn "Group '$m' not defined before use in " . "$cfg::AVAIL_FILE.\n"; next; } # Add the specified group to the membership. foreach (split /,/, $GROUPS{$m}) { $members{$_} = 1; } } elsif ($m =~ s/\!//) { $m = "$CVSROOT/CVSROOT/$m" if $m !~ /^\//; if (open USERLIST, $m) { while () { chomp; s/\s*(#.*)?$//; next if /^$/; $members{$_} = 1; } close USERLIST; } else { warn "Can't open user file $m " . "defined in $cfg::AVAIL_FILE.\n"; } } else { $members{$m} = 1; } } return join("," , sort keys %members); } d>-14/+15 * Convert to new options frameworkjohans2012-06-291-1/+4 * Update maintainer addresses, MASTER_SITES and PATCH_SITEScrees2012-06-291-1/+1 * - Remove SITE_PERL from *_DEPENDSaz2012-06-292-2/+2 * Convert to new options frameworkjohans2012-06-293-20/+31 * - reset MAINTAINERdinoex2012-06-261-1/+1 * - reset MAINTAINERdinoex2012-06-2612-12/+12 * - Convert to optionsNGak2012-06-252-22/+15 * s/X11BASE/LOCALBASE/, or equivalent.dougb2012-06-255-6/+6 * update cegui to 0.7.7oliver2012-06-254-7/+7 * update cegui to 0.7.6oliver2012-06-244-8/+8 * Upgrade to OptionsNGeadler2012-06-241-4/+5 * Update to 0.9.5madpilot2012-06-234-19/+94 * - Update to 1.0.2amdmi32012-06-222-5/+5 * Remove BROKEN now that imlib is fixed.kwm2012-06-201-2/+0 * Every options were enabled by default before conversion, reapply thisbapt2012-06-181-0/+1 * - Fix build on pointyhatak2012-06-181-6/+4 * Convert to new options frameworkjohans2012-06-163-32/+35 * - Switch to OptionsNgmartymac2012-06-152-6/+7 * - Switch to OptionsNgmartymac2012-06-151-3/+5 * - Switch to OptionsNgmartymac2012-06-152-8/+12 * - Switch to OptionsNgmartymac2012-06-153-17/+23 * Switch to OptionsNgmartymac2012-06-151-1/+3 * Register conflict with Empirejohans2012-06-151-0/+2 * KDE/FreeBSD team presents KDE SC 4.8.4, probably the last release in 4.8.x se...makc2012-06-1510-13/+11 * Fix typobapt2012-06-142-2/+2 * - Mark BROKEN: does not compilepav2012-06-142-0/+4 * Reapply this original logic of the optionsbapt2012-06-141-2/+2 * - Mark BROKEN: does not compilepav2012-06-141-0/+2 * Remove expired port:ak2012-06-1312-1940/+0 * 2012-05-31 deskutils/sciplore-mindmapping: Discontinued, use deskutils/docear...bapt2012-06-139-165/+0 * Convert to new options framework.madpilot2012-06-132-11/+13 * Convert to new options frameworkbapt2012-06-1354-619/+613 * Remove games/flightgear-atlas, unmaintained upstreammartymac2012-06-126-101/+0 * - Convert all remaining instances of BUILD_DEPENDS=${RUN_DEPENDS} orswills2012-06-112-2/+2 * - Update to 1.10.3 (see http://changelog.wesnoth.org for details)ak2012-06-1015-223/+460 * - according to [1] py-anki had switched to SQLAlchemy 0.7rm2012-06-104-23/+19 * - fix build with gnustep 1.24.0dinoex2012-06-091-6/+0 * - Fix plistamdmi32012-06-082-5/+1 * - Update to 0.6.0amdmi32012-06-074-71/+806 * - Do not install Apple Double garbage. This also fixes installation on 10.xamdmi32012-06-076-482/+14 * Add CONFLICTS_INSTALL against games/exult and lang/ucc. Bump PORTREVISION.scf2012-06-071-1/+3 * - Update to 2.0.1amdmi32012-06-073-8/+9 * Update to OPTIONSngcrees2012-06-061-3/+4 * Get rid of ${SITE_PERL} in *_DEPENDSehaupt2012-06-061-1/+1 * - Convert USE_QT_VER=4 and QT_COMPONETS to USE_QT4miwi2012-06-0630-60/+30 * - Update to version 2.5.0.0sylvio2012-06-062-16/+14 * Strip version information from LIB_DEPENDS to pet portlintrene2012-06-061-2/+2 * - Remove SITE_PERL from *_DEPENDSaz2012-06-052-7/+7 * Add a WITH_NATIVE_LIBS optioncrees2012-06-041-7/+77 * Chase security/gsasl library updatejohans2012-06-031-2/+2 * Set maintainership back to ports@cs2012-06-031-1/+1 * Update wolfpack to 4.3.30johans2012-06-032-3/+4 * - fix build on FreeBSD10dinoex2012-06-031-0/+2 * - Update MAINTAINER's addressculot2012-06-031-1/+1 * - Fix error when running from read-only fsak2012-06-021-1/+3 * Unknown Horizons is a 2D realtime strategy simulation with an emphasissperber2012-06-027-0/+2887 * - Resolve conflict with misc/shuffle [1]ak2012-06-022-14/+5 * - fix LIB_DEPENDS for png 1.5.10dinoex2012-06-011-1/+2 * - update png to 1.5.10dinoex2012-06-01445-500/+1600 * - Disallow from pointyhat for overrunning filesize limit (>400MB)pav2012-06-011-0/+2 * - Convert to new options frameworkmadpilot2012-06-011-6/+8 * - Update to recent git snapshot which works with newer ceguiamdmi32012-05-283-52/+238 * - Enable null renderer in ceguiamdmi32012-05-282-4/+4 * - Switch to python 25 as mini. version.miwi2012-05-282-2/+2 * Race for the Galaxy AI is a GTK-based version of the card game of themadpilot2012-05-265-0/+84 * - Update to 2.0.3miwi2012-05-253-54/+340 * - Update to 1.8.1miwi2012-05-253-559/+1006 * FIFE is a cross platform 2D game creation framework written in C++ with Pythonmiwi2012-05-256-0/+666 * Fix battlestar(6), there was treachery afoot, see the newsflash.uqs2012-05-252-1/+35 * Add 0ad, real-time strategy (RTS) game of ancient warfare.madpilot2012-05-2514-0/+288 * KDE/FreeBSD team presents long awaited KDE SC 4.8.3!makc2012-05-2511-25/+26 * Chase PyQT updatemakc2012-05-251-1/+1 * Update to 2.1.3kevlo2012-05-244-5/+23 * - Add a desktop entry [1]lme2012-05-241-2/+9 * - Update to 1.2.3miwi2012-05-232-14/+16 * - Update to 1.2.11miwi2012-05-233-7/+8 * - Chase poco updatepav2012-05-231-2/+2 * - remove USE_GMAKE, HAS_CONFIGURE, CONFIGURE_ENV, MAKE_ENVak2012-05-221-11/+10 * - remove DISTNAME, USE_GMAKE, HAS_CONFIGURE, MAKE_ENVak2012-05-222-18/+22 * This is a puzzle from the old C64 Impossible Mission game.ak2012-05-194-0/+58 * - split out -server part from ioquake3-based ports:rm2012-05-1926-122/+214 * The Grind is a simple game about escaping from work at a reasonable hourmiwi2012-05-184-0/+58 * Falling Block Game is a free, open source block stacking game available formiwi2012-05-184-0/+58 * You are the master architect Daedalus. You have just finished buildingmiwi2012-05-184-0/+52 * Avoision is a straightforward, yet captivating distillation of vintage arcademiwi2012-05-184-0/+58 * Mark BROKEN= does not build with boost-1.48.0makc2012-05-171-0/+2 * Add patches to fix build with boost-1.48.0makc2012-05-172-1/+12 * - Update to 1.17.0miwi2012-05-163-21/+43 * Kajaani Kombat is a funny multiplayer game... and much more!mva2012-05-164-0/+81 * fix INDEXflo2012-05-151-1/+0 * Update to 2.6.5.33 and unbreakmakc2012-05-152-9/+4 * There's a black box. You can shoot in and watch, where the shotamdmi32012-05-155-0/+75 * Syobon Action (also known as Cat Mario or Neko Mario) is a platform gameamdmi32012-05-154-2/+54 * Tanglet is a single player word finding game based on Boggle. Theamdmi32012-05-155-0/+110 * This is an implementation of the sets game.mva2012-05-155-0/+56 * A game of dexterity, being somewhere between Breakout and billiard,mva2012-05-155-0/+75 * Update to 2.1.1.0.madpilot2012-05-1312-79/+60 * Simsu is a basic Sudoku game. You can switch between filling in notesmva2012-05-135-0/+89 * - Undeprecate, fix is ready pending cegui updateamdmi32012-05-131-3/+0 * - Mark BROKEN: does not buildpav2012-05-131-0/+2 * - Fix spelling erroramdmi32012-05-131-1/+1 * - Use proper way to disable package building on pointyhatamdmi32012-05-121-3/+1 * - Add mirroramdmi32012-05-121-1/+2 * - Update to 0.3.2amdmi32012-05-123-8/+111 * - Respect STRIP in games using darkplaces engineamdmi32012-05-123-7/+10 * - Install binary in ../bin and not ../gamesscheidell2012-05-124-9/+19 * - Remove unmaintained COW-3 binary in favor of supported opensource client-co...scheidell2012-05-124-74/+0 * Netrek is a multi-player battle simulation with a Star Trek theme.scheidell2012-05-127-0/+393 * Update autoconf to 2.69 and automake to 1.12ade2012-05-124-3/+26 * Block Rage is a falling blocks game with a 2-player hotseat mode,mva2012-05-115-0/+75 * - De-pkg-plistcrees2012-05-112-14/+16 * - Update to 1.12.1wen2012-05-102-3/+3 * - Update to version 111.2.2ak2012-05-095-1558/+30 * GLightOff is a simple (but not so easy to solve!) puzzle game.pawel2012-05-085-0/+70 * CuteMaze is a simple, top-down game in which mazes are randomly generated usingcrees2012-05-075-0/+107 * The aim of Bubble Chains is to remove all of the targets on each level,crees2012-05-075-0/+88 * - Use USE_DOS2UNIX instead of homemade equivalentak2012-05-062-11/+10 * The object of the game is to remove all of the blocks from the screenak2012-05-044-0/+57 * - Mark BROKEN: does not compilepav2012-05-031-0/+2 * Fix build with gcc46+martymac2012-05-0221-0/+228 * - Chase x11-toolkits/fox16 shlib bumpgahr2012-05-021-1/+1 * - Use pkg-message instead of ${ECHO}ak2012-05-012-6/+8 * - attach gplv2 licensejgh2012-05-011-0/+3 * SDL Lopan is a mahjong game remakeak2012-04-285-0/+72 * SDL Jewels is a tile-matching 8x8 puzzle gameak2012-04-285-1/+87 * Remove do-build target, set ALL_TARGET instead.ak2012-04-281-4/+2 * SDL Scavenger A Lode Runner like gameak2012-04-276-0/+92 * Update Simgear and Flightgear ports to 2.6.0martymac2012-04-2710-84/+130 * - Update to 1.10tabthorpe2012-04-272-3/+3 * - Update graphics/osg to 3.0.1amdmi32012-04-263-15/+8 * Arx Libertatis is a cross-platform, open source port of Arx Fatalis,amdmi32012-04-266-0/+90 * Remove uneeded data port. Everything is now included in games/netpanzer.madpilot2012-04-265-434/+0 * Update to version 0.8.4 [1]madpilot2012-04-268-49/+70 * Correct website in pkg-descreadler2012-04-251-1/+1 * - Use correct version of love binaryamdmi32012-04-242-2/+2 * - Switch to devel/love07amdmi32012-04-241-1/+2 * Install program's icon and desktop entry filepawel2012-04-242-0/+13 * - Update to 1.7.0amdmi32012-04-238-48/+36 * - Update to 20120128 (1.0.1)pawel2012-04-233-8/+17 * - Update to version 0.4.5miwi2012-04-222-9/+9 * - Update to 1.0.0miwi2012-04-226-29/+72 * - WWW is no longer available, change to an alternative versionlme2012-04-223-3/+3 * Unbreak.motoyuki2012-04-211-5/+0 * - Update Shogi to 1.4.0johans2012-04-202-4/+6 * Update xboard to 4.6.2johans2012-04-202-3/+3 * Update to version 1.76pawel2012-04-1911-317/+363 * - Bump PORTREVISION (freepascal ports were updated)acm2012-04-191-1/+1 * The Lightweight Java Game Librarycrees2012-04-189-0/+307 * Java Game Controller APIcrees2012-04-184-0/+46 * A set of APIs utilized by the Java Game Technology Group.crees2012-04-184-0/+39 * - Update to 0.10.2ak2012-04-176-156/+215 * Update to version 1.70.0pawel2012-04-156-38/+7 * Change to my FreeBSD.org email address.madpilot2012-04-155-5/+5 * Update to 0.9.4madpilot2012-04-142-4/+4 * Fix build on FreeBSD 7 (work with old scandir prototype)ak2012-04-131-8/+8 * Fix various errors in ports distinfoak2012-04-121-1/+1 * Add missing dependency on curl to fix build.makc2012-04-101-0/+2 * Mark as deprecated and set expiration to 2012-05-10 for ports that are mark a...bapt2012-04-108-0/+24 * Fix build on FreeBSD 7 (work with old scandir prototype)ak2012-04-072-1/+18 * Update to 1.60.0makc2012-04-069-122/+73 * Really fix plisterwin2012-04-042-1/+2 * Update FreeCiv to 2.3.2johans2012-04-013-7/+5 * Mark as broken: overwrite files own by the tuxracer packagebapt2012-04-011-0/+2 * - Update to xboard 4.6.0johans2012-03-313-4/+33 * - Update to 0.5.2acm2012-03-315-7/+7 * The Castles of Dr. Creep is a platform puzzle gameak2012-03-305-0/+60 * - Assign to volunteer/authorpav2012-03-301-1/+1 * - update to 0.1brm2012-03-272-3/+3 * Readd BROKEN: still can't find numpyerwin2012-03-261-0/+2 * - Update to 2011.753acm2012-03-264-12/+11 * - Update to 0.5.1acm2012-03-264-7/+6 * - update to 0.01rm2012-03-264-32/+44 * - Update GNU Chess to 6.0.2johans2012-03-253-28/+4 * - Change GCC 4.4 to 4.6miwi2012-03-251-1/+1 * - Fix OPTIONS handlingmiwi2012-03-251-6/+5 * - Update to version 0.43.3dmiwi2012-03-258-1958/+3813 * - Update to version 1.9miwi2012-03-253-33/+12 * - Update to 0.5.1miwi2012-03-253-6/+6 * - Add LICENSEmiwi2012-03-252-103/+125 * - Update to version 1.9.1miwi2012-03-253-8/+16 * - Update to version 1.3.10miwi2012-03-256-106/+44 * - Update to 0.3amdmi32012-03-243-31/+24 * - Update to 4.3.9jgh2012-03-212-4/+4 * Add missing LICENSE informationmartymac2012-03-201-2/+8 * Return this to the pool. (I only ported it on request a long timenox2012-03-201-1/+1 * - Update to 0.7.0ak2012-03-207-958/+1225 * - Update to 0.6.0amdmi32012-03-192-5/+5 * Update to 12.01.mezz2012-03-143-7/+23 * Update to 2.0.3makc2012-03-133-15/+39 * - reset maintainer, he has no more interest in maintaining this portak2012-03-131-1/+4 * - Update to 20120310 (which also prepares it for graphics/osg update)amdmi32012-03-112-4/+3 * - Prepare for boost updateamdmi32012-03-101-0/+15 * - Prepare for devel/boost updateamdmi32012-03-101-0/+2 * - Update to 0.143amdmi32012-03-103-3/+14 * - Update to 0.9.3 and unbreakjgh2012-03-104-10/+48 * - Use full path for java to resolve server startup operationsjgh2012-03-102-6/+7 * - Prepare for boost updateamdmi32012-03-091-1/+1 * Update to 0.10.5 release.ale2012-03-082-4/+3 * - Fix build with curl 7.24.0: curl/types.h was removed (unused since Apr 2004)sunpoet2012-03-085-0/+10 * - Update to 1.2.3jgh2012-03-083-63/+37 * Remove build dependencies on textproc/docbook-xml and textproc/docbook-xsl.makc2012-03-071-2/+0 * - Fix buildamdmi32012-03-071-0/+2 * - Fix buildamdmi32012-03-071-0/+10 * - Mark BROKEN: does not compilepav2012-03-071-0/+2 * - Ignore version 0.5 in portscoutamdmi32012-03-052-2/+5 * - Update to 0.5.6miwi2012-03-047-40/+38 * - Update to 1.12miwi2012-03-042-3/+3 * - Update to 0.4.0miwi2012-03-043-5/+6 * - Update to 1.5miwi2012-03-043-8/+8 * Update maintainer email in my portsak2012-03-032-2/+2 * - Add TEST_DEPENDS to enable testingswills2012-03-012-0/+5 * Improve port description.danfe2012-03-011-6/+6 * Define LICENSE (GPLv2) and sort knobs a bit while I am here.danfe2012-02-281-4/+6 * - Reassign to the heapglarkin2012-02-285-5/+5 * - Update to 3.8culot2012-02-272-4/+4 * Take maintainershipeadler2012-02-251-1/+1 * Update to 0.12.5.stefan2012-02-254-14/+25 * - Update to 1.6.2amdmi32012-02-235-160/+86 * Connect quadramakc2012-02-221-0/+1 * Add new port games/quadra:makc2012-02-226-0/+95 * Update to 1.3.3rene2012-02-213-77/+434 * - Fix build with new pngswills2012-02-202-1/+21 * Remove quotes from BROKEN and IGNORE as they are not requiredeadler2012-02-201-1/+1 * - Update to 0.7.0miwi2012-02-203-6/+18 * - Update to version 3.10.0miwi2012-02-202-4/+3 * - Update to 0.7.11miwi2012-02-202-3/+7 * Remove quotes from BROKEN and IGNORE as they are not requiredeadler2012-02-201-1/+1 * - fix versions usage in USE_PYTHON. F.e. 27 -> 2.7 (non-functional change)rm2012-02-191-1/+1 * - Fixed OpenGL usage knob.mva2012-02-181-1/+1 * - Update devel/sdl12 to 1.2.15mva2012-02-18336-239/+390 * - Update to 4.3dhn2012-02-185-161/+76 * - Bump PORTREVISION to chase the update of multimedia/libvpxashish2012-02-16