From owner-freebsd-ports-bugs@FreeBSD.ORG Fri Nov 11 16:10:28 2005 Return-Path: X-Original-To: freebsd-ports-bugs@hub.freebsd.org Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 07B8516A41F for ; Fri, 11 Nov 2005 16:10:28 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 16C2A43D46 for ; Fri, 11 Nov 2005 16:10:20 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id jABGAJNp072027 for ; Fri, 11 Nov 2005 16:10:19 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id jABGAJB4072020; Fri, 11 Nov 2005 16:10:19 GMT (envelope-from gnats) Resent-Date: Fri, 11 Nov 2005 16:10:19 GMT Resent-Message-Id: <200511111610.jABGAJB4072020@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, "Michael C. Shultz" Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DF94116A41F for ; Fri, 11 Nov 2005 16:07:11 +0000 (GMT) (envelope-from ringworm01@gmail.com) Received: from vms048pub.verizon.net (vms048pub.verizon.net [206.46.252.48]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6EAFD43D46 for ; Fri, 11 Nov 2005 16:07:11 +0000 (GMT) (envelope-from ringworm01@gmail.com) Received: from ringworm.mechee.com ([71.102.14.129]) by vms048.mailsrvcs.net (Sun Java System Messaging Server 6.2-4.02 (built Sep 9 2005)) with ESMTPA id <0IPS00GHDSRQMDO0@vms048.mailsrvcs.net> for FreeBSD-gnats-submit@freebsd.org; Fri, 11 Nov 2005 10:07:11 -0600 (CST) Received: by ringworm.mechee.com (Postfix, from userid 1001) id A464E130C22; Fri, 11 Nov 2005 07:57:39 -0800 (PST) Message-Id: <20051111155739.A464E130C22@ringworm.mechee.com> Date: Fri, 11 Nov 2005 07:57:39 -0800 (PST) From: "Michael C. Shultz" To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Helge Oldach Subject: ports/88847: [MAINTAINER] update sysutils/portmanager X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: "Michael C. Shultz" List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Nov 2005 16:10:28 -0000 >Number: 88847 >Category: ports >Synopsis: [MAINTAINER] update sysutils/portmanager >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: maintainer-update >Submitter-Id: current-users >Arrival-Date: Fri Nov 11 16:10:19 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Michael C. Shultz >Release: FreeBSD 5.4-STABLE i386 >Organization: >Environment: System: FreeBSD ringworm.mechee.com 5.4-STABLE FreeBSD 5.4-STABLE #0: Fri Nov 4 06:35:37 PST 2005 root@ringworm.mechee.com:/usr5/obj/usr5/src/sys/RINGWORM5 i386 >Description: update sysutils/portmanager to 0.3.4 1. Added WITH_BUILD_DEPENDS_ARE_LEAVES knob as promised in: http://www.freebsd.org/cgi/query-pr.cgi?pr=88778 (now closed) 2. Fixed another bug in -slid, now all leaf ports are seen in one pass again Note to comitter: New tarball because I couldn't get the knob to work right with a patch, so please remove /files*, no patches needed. >How-To-Repeat: N/A >Fix: --- portmanager-0.3.4.diff begins here --- diff -ruN portmanager/Makefile portmanager-0.3.4/Makefile --- portmanager/Makefile Thu Nov 10 16:32:35 2005 +++ portmanager-0.3.4/Makefile Fri Nov 11 07:42:12 2005 @@ -6,8 +6,7 @@ # PORTNAME= portmanager -PORTVERSION= 0.3.3 -PORTREVISION= 3 +PORTVERSION= 0.3.4 CATEGORIES= sysutils MASTER_SITES= http://portmanager.sunsite.dk/distfiles/ \ ${MASTER_SITE_SOURCEFORGE} @@ -38,12 +37,17 @@ --with-portsdir=${PORTSDIR} --with-sharedir=/share/portmanager \ --with-tempdir=/tmp -OPTIONS= DEBUG "Enables debug support and all compile warning" off +OPTIONS= DEBUG "Enable debug support and warnings" off \ + BUILD_DEPENDS_ARE_LEAVES "Treat build dependencies as leaves" off .include .if defined(WITH_DEBUG) CONFIGURE_ARGS+= --with-debug=yes +.endif + +.if defined(WITH_BUILD_DEPENDS_ARE_LEAVES) +CONFIGURE_ARGS+= --with-treatBuildDependsAsLeaves=yes .endif # Keep this in post-configure. After run configure, he change this value. diff -ruN portmanager/distinfo portmanager-0.3.4/distinfo --- portmanager/distinfo Wed Nov 9 03:25:18 2005 +++ portmanager-0.3.4/distinfo Fri Nov 11 06:32:33 2005 @@ -1,3 +1,3 @@ -MD5 (portmanager-0.3.3.tar.gz) = 4d2377a4d3f760335f1f63f5b41bcdc6 -SHA256 (portmanager-0.3.3.tar.gz) = 93390d715929f12a2bf0d0762f1f360263665fd8edb1ee7124b3e9817636ad7c -SIZE (portmanager-0.3.3.tar.gz) = 432705 +MD5 (portmanager-0.3.4.tar.gz) = 9dcb56c7bfe8041486d8741e6b2cf9bf +SHA256 (portmanager-0.3.4.tar.gz) = 2a1281a2a36b6c4623c05ef4e656319895bdc0511d633ee26396ce8d4bafad21 +SIZE (portmanager-0.3.4.tar.gz) = 435628 diff -ruN portmanager/files/patch-0.3.3_1 portmanager-0.3.4/files/patch-0.3.3_1 --- portmanager/files/patch-0.3.3_1 Wed Nov 9 03:25:18 2005 +++ portmanager-0.3.4/files/patch-0.3.3_1 Wed Dec 31 16:00:00 1969 @@ -1,877 +0,0 @@ -diff -ruN ../0.3.3/libMG/src/MGdbDelete.c ./libMG/src/MGdbDelete.c ---- ../0.3.3/libMG/src/MGdbDelete.c Sat Nov 5 05:43:08 2005 -+++ ./libMG/src/MGdbDelete.c Tue Nov 8 11:38:35 2005 -@@ -23,18 +23,19 @@ - #include - #include - --int MGdbDelete( classDb* db, int recordIdx ) -+classDb* MGdbDelete( classDb* db, int recordIdx ) - { - FILE* dbFileStream; - char id[] = "MGdbDelete"; - static char* newPath = NULL; - int stringSize = 0; -+ static classDb* newDb; - - /* check if we have a valid object */ - if(db == NULL || db->parent.type != CLASS_TYPE_DB) - { - fprintf( stderr, "%s error: invalid object type\n", id); -- return( 1 ); -+ return( NULL ); - } - - db->parent.recordIdx = 0; -@@ -50,7 +51,7 @@ - { - fprintf( stderr, "%s error: unable to open %s mode \"w\"\n", id, db->parent.path ); - perror( "system message" ); -- return( 1 ); -+ return( NULL ); - } - /*zzzzzzzzzzzzzz*/ - -@@ -91,14 +92,15 @@ - newPath = (char*)calloc( stringSize, 1 ); - strcpy( newPath, db->parent.path ); - MGdbDestroy( db ); -- if( ( db = MGdbOpen( newPath ) ) == NULL ) -+ if( ( newDb = MGdbOpen( newPath ) ) == NULL ) - { - fprintf( stderr, "%s error: unable to MGdbOpen %s\n", id, newPath ); - perror( "system message" ); -- return( 1 ); -+ return( NULL ); - } -+ db = newDb; - free( newPath ); -- return( 0 ); -+ return( newDb ); - } - - -diff -ruN ../0.3.3/libMG/src/MGdbOpen.c ./libMG/src/MGdbOpen.c ---- ../0.3.3/libMG/src/MGdbOpen.c Sat Nov 5 05:43:08 2005 -+++ ./libMG/src/MGdbOpen.c Tue Nov 8 08:20:40 2005 -@@ -26,11 +26,10 @@ - classDb* MGdbOpen( char* dbFileName ) - { - char id[] = "MGdbOpen"; -- int errorCode = 0; - static classDb* db; - - /*zzzzzzzzzzzzzz*/ -- db = ( classDb* )malloc( sizeof(classDb) + 1 ); -+ db = ( classDb* )calloc( sizeof(classDb), 1 ); - db->parent.mallocIdx = 1; - /*zzzzzzzzzzzzzz*/ - -@@ -48,13 +47,6 @@ - db->parent.recordIdx = 0; - db->parent.recordQty = 0; - db->parent.type = CLASS_TYPE_DB; -- -- -- if(errorCode) -- { -- fprintf( stderr, "%s error: %s returned errorCode %d\n", id, "MGmSetString", errorCode ); -- assert(0); -- } - - MGdbRead( db ); - -diff -ruN ../0.3.3/libMG/src/libMG.h ./libMG/src/libMG.h ---- ../0.3.3/libMG/src/libMG.h Sat Nov 5 05:43:08 2005 -+++ ./libMG/src/libMG.h Tue Nov 8 11:37:11 2005 -@@ -106,7 +106,7 @@ - classDb* MGdbCreate( char* dbFileName, ... ); - classDb* MGdbOpen( char* dbFileName ); - int MGdbAdd(classDb* db, ...); --int MGdbDelete(classDb* db, int recordIdx ); -+classDb* MGdbDelete(classDb* db, int recordIdx ); - int MGdbDestroy(classDb* db); - int MGdbGetRecno(classDb* db ); - int MGdbGetRecordQty(classDb* db); -diff -ruN ../0.3.3/libMGPM/src/MGPMrBestOldPort.c ./libMGPM/src/MGPMrBestOldPort.c ---- ../0.3.3/libMGPM/src/MGPMrBestOldPort.c Mon Nov 7 14:51:35 2005 -+++ ./libMGPM/src/MGPMrBestOldPort.c Tue Nov 8 00:16:52 2005 -@@ -121,7 +121,7 @@ - property->fieldOldPortsDbOldPortDir, - exact ) ) - { -- fprintf( stdout, "skipping %s %s old dependency: %s\n", -+ fprintf( stdout, "skipping %s %s until dependency %s updated\n", - oldPortName, - oldPortDir, - MGdbGet( property->availableDependenciesDb, -@@ -156,7 +156,7 @@ - property->fieldOldPortsDbOldPortDir, - exact ) ) - { -- fprintf( stdout, "skipping %s %s old dependency: %s\n", -+ fprintf( stdout, "skipping %s %s until dependency %s updated\n", - oldPortName, - oldPortDir, - MGdbGet( property->availableDependenciesDb, -diff -ruN ../0.3.3/libMGPM/src/MGPMrController.c ./libMGPM/src/MGPMrController.c ---- ../0.3.3/libMGPM/src/MGPMrController.c Sat Nov 5 05:43:08 2005 -+++ ./libMGPM/src/MGPMrController.c Tue Nov 8 12:29:47 2005 -@@ -30,9 +30,18 @@ - #include - - int rPmUpgradeNewMethod( structProperty* property ); --int rPmUpgradeOriginalMethod( structProperty* property ); - int MGPMrController( structProperty* property, char* path ) - { -+ char ignore[] = "/IGNORE"; -+ char upgradeInteractive[] = "--upgrade-interactive"; -+ char resume[] = "--resume"; -+ char ui[] = "-ui"; -+ char backUp[] = "--back-up"; -+ char yes[] = "--yes"; -+ char y[] = "-y"; -+ char f[] = "-f"; -+ char fix[] = "--fix"; -+ char bu[] = "-bu"; - char exact[] = "exact"; - char id[] = "MGPMrController"; - char* command = NULL; -@@ -52,8 +61,8 @@ - int oldPortsDbTOTALIZER = 0; - - command = (char*)calloc( bufferSize,1); -- oldPortDir = (char*)calloc(255,1); -- oldPortName = (char*)calloc(255,1); -+ oldPortDir = (char*)calloc(512,1); -+ oldPortName = (char*)calloc(512,1); - xtermTitle = (char*)calloc( bufferSize,1 ); - - property->cacheDb = MGdbCreate( -@@ -71,14 +80,14 @@ - property->commandLineDb = MGdbOpen( property->commandLineDbFileName ); - - MGdbGoTop( property->commandLineDb ); -- if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, "-f", property->fieldCommandLineDbKey, exact ) ) -+ if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, f, property->fieldCommandLineDbKey, exact ) ) - { - property->forced = 1; - fprintf( stdout, "%s %s info: running in forced update mode\n", id, PACKAGE_VERSION ); - while( fflush( stdout ) ); - } - MGdbGoTop( property->commandLineDb ); -- if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, "--fix", property->fieldCommandLineDbKey, exact ) ) -+ if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, fix, property->fieldCommandLineDbKey, exact ) ) - { - property->forced = 1; - fprintf( stdout, "%s %s info: running in forced update mode\n", id, PACKAGE_VERSION ); -@@ -86,37 +95,37 @@ - } - - MGdbGoTop( property->commandLineDb ); -- if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, "-bu", property->fieldCommandLineDbKey, exact ) ) -+ if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, bu, property->fieldCommandLineDbKey, exact ) ) - { - property->backUp = 1; - } - MGdbGoTop( property->commandLineDb ); -- if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, "--back-up", property->fieldCommandLineDbKey, exact ) ) -+ if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, backUp, property->fieldCommandLineDbKey, exact ) ) - { - property->backUp = 1; - } - MGdbGoTop( property->commandLineDb ); -- if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, "-y", property->fieldCommandLineDbKey, exact ) ) -+ if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, y, property->fieldCommandLineDbKey, exact ) ) - { - property->autoConflicts = 1; - property->autoMoved = 1; - } -- if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, "--yes", property->fieldCommandLineDbKey, exact ) ) -+ if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, yes, property->fieldCommandLineDbKey, exact ) ) - { - property->autoConflicts = 1; - } - MGdbGoTop( property->commandLineDb ); -- if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, "--resume", property->fieldCommandLineDbKey, exact ) ) -+ if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, resume, property->fieldCommandLineDbKey, exact ) ) - { - property->resume = 1; - } - MGdbGoTop( property->commandLineDb ); -- if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, "-ui", property->fieldCommandLineDbKey, exact ) ) -+ if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, ui, property->fieldCommandLineDbKey, exact ) ) - { - property->interactive = 1; - } - MGdbGoTop( property->commandLineDb ); -- if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, "--upgrade-interactive", property->fieldCommandLineDbKey, exact ) ) -+ if( MGdbSeek( property->commandLineDb, property->fieldCommandLineDbKey, upgradeInteractive, property->fieldCommandLineDbKey, exact ) ) - { - property->interactive = 1; - } -@@ -128,7 +137,7 @@ - property->configDb = MGdbOpen( property->configDbFileName ); - property->ignoreDb = MGdbOpen( property->ignoreDbFileName ); - MGdbGoTop( property->configDb ); -- while( ( configDbValuePtr = MGdbSeek( property->configDb, property->fieldConfigDbKey, "/IGNORE", property->fieldConfigDbValue, exact ) ) ) -+ while( ( configDbValuePtr = MGdbSeek( property->configDb, property->fieldConfigDbKey, ignore, property->fieldConfigDbValue, exact ) ) ) - { - MGdbAdd( property->ignoreDb, configDbValuePtr, "set to ignore in pm-020.conf", NULL ); - fprintf( stdout, "%s %s info: Adding %s to ignoreDB reason: %s\n", id, PACKAGE_VERSION, configDbValuePtr, "set to ignore in pm-020.conf" ); -@@ -146,6 +155,7 @@ - fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrCreateInstalledDb", errorCode ); - free( command ); - free( oldPortDir ); -+ free( oldPortName ); - free( xtermTitle ); - return( 1 ); - } -@@ -155,11 +165,13 @@ - fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrShowLeaves", errorCode ); - free( command ); - free( oldPortDir ); -+ free( oldPortName ); - free( xtermTitle ); - return( 1 ); - } - free( command ); - free( oldPortDir ); -+ free( oldPortName ); - free( xtermTitle ); - return( 0 ); - } -@@ -190,6 +202,7 @@ - "MGPMrCreateInstalledDb", errorCode ); - free( command ); - free( oldPortDir ); -+ free( oldPortName ); - free( xtermTitle ); - return( 1 ); - } -@@ -197,6 +210,10 @@ - { - fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, - "MGPMrCreateAllUpdateStatusDb", errorCode ); -+ free( command ); -+ free( oldPortDir ); -+ free( oldPortName ); -+ free( xtermTitle ); - return( 1 ); - } - } -@@ -206,6 +223,10 @@ - { - fprintf( stdout, "%s %s error: failed to open %s\n", id, PACKAGE_VERSION, property->ignoreDbFileName ); - perror( "system" ); -+ free( command ); -+ free( oldPortDir ); -+ free( oldPortName ); -+ free( xtermTitle ); - return( 1 ); - } - MGdbDestroy( property->ignoreDb ); -@@ -215,11 +236,13 @@ - fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrShowLeavesDelete", errorCode ); - free( command ); - free( oldPortDir ); -+ free( oldPortName ); - free( xtermTitle ); - return( 1 ); - } - free( command ); - free( oldPortDir ); -+ free( oldPortName ); - free( xtermTitle ); - return( 0 ); - } -@@ -231,6 +254,7 @@ - fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrCreateStatusDb", errorCode ); - free( command ); - free( oldPortDir ); -+ free( oldPortName ); - free( xtermTitle ); - return( 1 ); - } -@@ -238,6 +262,10 @@ - if( ( errorCode = MGPMrMissingDependencies( property ) ) ) - { - fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrMissingDependencies", errorCode ); -+ free( command ); -+ free( oldPortDir ); -+ free( oldPortName ); -+ free( xtermTitle ); - return( 1 ); - } - -@@ -246,11 +274,13 @@ - fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrCreateStatusDb", errorCode ); - free( command ); - free( oldPortDir ); -+ free( oldPortName ); - free( xtermTitle ); - return( 1 ); - } - free( command ); - free( oldPortDir ); -+ free( oldPortName ); - free( xtermTitle ); - return(0); - } -@@ -258,9 +288,10 @@ - if( path && strcmp( path, "PMUPGRADE" ) == 0 ) - { - rPmUpgradeNewMethod( property ); --/* -- rPmUpgradeOriginalMethod( property ); --*/ -+ free( command ); -+ free( oldPortDir ); -+ free( oldPortName ); -+ free( xtermTitle ); - return( 0 ); - } - -@@ -274,6 +305,10 @@ - if( ( errorCode = MGPMrSinglePortCreateStatusDb( property, path ) ) ) - { - fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrSinglePortCreateStatusDb", errorCode ); -+ free( command ); -+ free( oldPortDir ); -+ free( oldPortName ); -+ free( xtermTitle ); - return( 1 ); - } - -@@ -293,6 +328,7 @@ - fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrCreateStatusDb", errorCode ); - free( command ); - free( oldPortDir ); -+ free( oldPortName ); - free( xtermTitle ); - return( 1 ); - } -@@ -300,6 +336,10 @@ - if( ( errorCode = MGPMrSinglePortStatus( property ) ) ) - { - fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrSinglePortStatus", errorCode ); -+ free( command ); -+ free( oldPortDir ); -+ free( oldPortName ); -+ free( xtermTitle ); - return( 1 ); - } - oldPortDir[0] = 0; -@@ -319,6 +359,10 @@ - else - { - fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrBestOldPort", errorCode ); -+ free( command ); -+ free( oldPortDir ); -+ free( oldPortName ); -+ free( xtermTitle ); - return( 1 ); - } - } -@@ -448,236 +492,9 @@ - } - free( command ); - free( oldPortDir ); -- free( xtermTitle ); -- return( errorCode ); --} -- --/*******************************************************/ --int rPmUpgradeOriginalMethod( structProperty* property ) --/*******************************************************/ --{ -- char exact[] = "exact"; -- char id[] = "rPmUpgradeOriginalMethod"; -- char* command = NULL; -- char* configDbValuePtr = NULL; -- char* oldPortDir = NULL; -- char* oldPortName = NULL; -- char* oldPortsDbNewPortDirPtr = NULL; -- char* oldPortsDbNewPortNamePtr = NULL; -- char* oldPortsDbReasonPtr = NULL; -- char* term = NULL; -- char* xtermTitle = NULL; -- float percentDone = 0; -- int bufferSize = 0xffff; -- int errorCode = 0; -- int oldPortsDbIDX = 0; -- int oldPortsDbQTY = 0; -- int oldPortsDbTOTALIZER = 0; -- -- command = (char*)calloc( bufferSize,1); -- oldPortDir = (char*)calloc(255,1); -- oldPortName = (char*)calloc(255,1); -- xtermTitle = (char*)calloc( bufferSize,1 ); -- -- property->cacheDb = MGdbCreate( -- property->cacheDbFileName, -- property->fieldCacheDbPortDir, -- property->fieldCacheDbAvailablePortName, -- property->fieldCacheDbMakeFileSize, -- property->fieldCacheDbMakeFileTime, -- NULL ); -- MGdbDestroy( property->cacheDb ); -- if( property->log ) -- { -- strcpy( command, "echo \"portmanager.log\" " ); -- strcat( command, " > /var/log/portmanager.log" ); -- system( command ); -- strcpy( command, "date >> /var/log/portmanager.log" ); -- system( command ); -- } -- while( 1 ) -- { -- if( ( errorCode = MGPMrCreateInstalledDb( property ) ) ) -- { -- fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrCreateInstalledDb", errorCode ); -- free( command ); -- free( oldPortDir ); -- free( oldPortName ); -- free( xtermTitle ); -- return( 1 ); -- } -- -- if( ( errorCode = MGPMrMissingDependencies( property ) ) ) -- { -- fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrMissingDependencies", errorCode ); -- free( command ); -- free( oldPortDir ); -- free( oldPortName ); -- free( xtermTitle ); -- return( 1 ); -- } -- if( ( errorCode = MGPMrStatus( property ) ) ) -- { -- fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrCreateStatusDb", errorCode ); -- free( command ); -- free( oldPortDir ); -- free( oldPortName ); -- free( xtermTitle ); -- return( 1 ); -- } -- oldPortDir[0] = 0; -- oldPortName[0] = 0; -- if( ( errorCode = MGPMrBestOldPort( property, oldPortDir, oldPortName ) ) ) -- { -- if( errorCode == 100 ) -- { -- fprintf( stdout, "%s\n", SINGLE_LINES ); -- fprintf( stdout, "%s %s INFO: finished with some ports not updated if --log was used see /var/log/portmanager.log\n", -- "portmanager", PACKAGE_VERSION ); -- while( fflush( stdout ) ); -- fprintf( stdout, "%s\n", SINGLE_LINES ); -- errorCode = 0; -- break; -- } -- else -- { -- fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrBestOldPort", errorCode ); -- free( command ); -- free( oldPortDir ); -- free( oldPortName ); -- free( xtermTitle ); -- return( 1 ); -- } -- } -- if( strlen(oldPortDir) > 1 ) -- { -- fprintf( stdout, "%s\n", SINGLE_LINES ); -- fprintf( stdout, "updating %s %s\n", oldPortName, oldPortDir ); -- -- /* -- * Set xterm title bar indicator -- */ -- property->oldPortsDb = MGdbOpen( property->oldPortsDbFileName ); -- oldPortsDbQTY = MGdbGetRecordQty( property->oldPortsDb ); -- -- if( oldPortsDbQTY - 1 > oldPortsDbTOTALIZER ) -- { -- oldPortsDbTOTALIZER = oldPortsDbQTY - 1; -- } -- percentDone = 100 - ( 100 * ( ( (float)oldPortsDbQTY - 1 ) / (float)oldPortsDbTOTALIZER ) ); -- fprintf( stdout, "percentDone-=>%d = 100 - ( 100 * ( oldPortsDbQTY-=>%d / oldPortsDbTOTALIZER-=>%d ) ) \n", -- (int)percentDone, oldPortsDbQTY-1, oldPortsDbTOTALIZER ); -- while( fflush( stdout ) ); -- -- term = getenv("TERM"); -- if( term && strncmp( term, "xterm", 5 ) == 0 && isatty(fileno(stdout)) ) -- { -- /* -- pr 81481 -- To fix the modification of xterm title, even when redirecting, one can -- test isatty(fileno(stdout)) before printing the escape sequence. -- */ -- strcpy( xtermTitle, "portmanager" ); -- strcat( xtermTitle, " done:% " ); -- strcat( xtermTitle, MGrIntToString( (long)percentDone ) ); -- strcat( xtermTitle, " updating " ); -- strcat( xtermTitle, oldPortName ); -- strcat( xtermTitle, " " ); -- strcat( xtermTitle, oldPortDir ); -- printf( "%c]0;%s%c", '\033', xtermTitle, '\007' ); -- } -- if( property->log ) -- { -- property->configDb = MGdbOpen( property->configDbFileName ); -- MGdbGoTop( property->configDb ); -- configDbValuePtr = MGdbSeek( property->configDb, property->fieldConfigDbKey, oldPortDir, -- property->fieldConfigDbValue, exact ); -- -- MGdbGoTop( property->oldPortsDb ); -- oldPortsDbReasonPtr = MGdbSeek( property->oldPortsDb, property->fieldOldPortsDbOldPortDir, oldPortDir, -- property->fieldOldPortsDbReason, exact ); -- if( oldPortsDbReasonPtr ) -- { -- oldPortsDbIDX = MGdbGetRecno( property->oldPortsDb ) - 1; -- oldPortsDbNewPortNamePtr = MGdbGet( property->oldPortsDb, oldPortsDbIDX, -- property->fieldOldPortsDbNewPortName ); -- oldPortsDbNewPortDirPtr = MGdbGet( property->oldPortsDb, oldPortsDbIDX, -- property->fieldOldPortsDbNewPortDir ); -- } -- strcpy( command, "echo \" " ); -- if( strcmp( oldPortName, "not installed" ) == 0 ) -- { -- strcat( command, "adding " ); -- strcat( command, oldPortName ); -- strcat( command, " " ); -- strcat( command, oldPortDir ); -- strcat( command, " " ); -- } -- else -- { -- strcat( command, "updating " ); -- strcat( command, oldPortName ); -- strcat( command, " " ); -- strcat( command, oldPortDir ); -- strcat( command, " " ); -- } -- if( configDbValuePtr ) -- { -- strcat( command, " options " ); -- strcat( command, configDbValuePtr ); -- } -- if( oldPortsDbReasonPtr ) -- { -- strcat( command, " " ); -- strcat( command, oldPortsDbReasonPtr ); -- strcat( command, " " ); -- strcat( command, oldPortsDbNewPortNamePtr ); -- strcat( command, " " ); -- strcat( command, oldPortsDbNewPortDirPtr ); -- strcat( command, " " ); -- } -- strcat( command, "\" >> /var/log/portmanager.log" ); -- system( command ); -- MGdbDestroy( property->configDb ); -- } -- MGdbDestroy( property->oldPortsDb ); -- } -- else -- { -- /* -- * Set xterm title bar indicator -- * -- * pr 81481 -- * To fix the modification of xterm title, even when redirecting, one can -- * test isatty(fileno(stdout)) before printing the escape sequence. -- */ -- if( term && strncmp( term, "xterm", 5 ) == 0 && isatty(fileno(stdout)) ) -- { -- strcpy( xtermTitle, "portmanager" ); -- strcat( xtermTitle, " " ); -- strcat( xtermTitle, " finished" ); -- printf( "%c]0;%s%c", '\033', xtermTitle, '\007' ); -- } -- fprintf( stdout, "%s %s INFO: all ports are up to date\n", "portmanager", PACKAGE_VERSION ); -- while( fflush( stdout ) ); -- break; -- } -- MGPMrUpdate( property, oldPortDir, oldPortName ); -- } -- -- if( property->log ) -- { -- strcpy( command, "echo \" end of log \" " ); -- strcat( command, " >> /var/log/portmanager.log" ); -- system( command ); -- strcpy( command, "date >> /var/log/portmanager.log" ); -- system( command ); -- } -- free( command ); -- free( oldPortDir ); - free( oldPortName ); - free( xtermTitle ); -- return( 0 ); -+ return( errorCode ); - } - - /*******************************************************/ -@@ -901,6 +718,7 @@ - strcpy( command, "date >> /var/log/portmanager.log" ); - system( command ); - } -+ free( oldPortName ); - free( command ); - free( oldPortDir ); - free( xtermTitle ); -diff -ruN ../0.3.3/libMGPM/src/MGPMrCreateAllUpdateStatusDb.c ./libMGPM/src/MGPMrCreateAllUpdateStatusDb.c ---- ../0.3.3/libMGPM/src/MGPMrCreateAllUpdateStatusDb.c Sun Nov 6 19:26:26 2005 -+++ ./libMGPM/src/MGPMrCreateAllUpdateStatusDb.c Tue Nov 8 15:49:01 2005 -@@ -52,7 +52,7 @@ - - counterPtr = &counter; - -- availablePortDir = (char*)calloc( 510, 1 ); -+ availablePortDir = (char*)calloc( bufferSize, 1 ); - availablePortName = (char*)calloc( bufferSize, 1 ); - - fprintf( stdout,"%s\n", SINGLE_LINES ); -@@ -122,6 +122,7 @@ - installedPortsDbIDX++; - } - MGdbDestroy( property->availablePortsDb ); -+ MGdbDestroy( property->installedPortsDb ); - MGdbDestroy( property->availableDependenciesDb ); - MGdbDestroy( property->configDb ); - free( availablePortDir ); -@@ -132,10 +133,9 @@ - int rrFindDepends( structProperty* property, char* availablePortDir, char* availablePortName, int* counterPtr ) - { - char id[] = "rrFindDepends"; -- char* availablePortsDbFlagPtr = NULL; - int availablePortsDbIDX = 0; - int errorCode = 0; -- int idx = 0; -+ int availablePortsDbQTY = 0; - - if( ( errorCode = rrGetPortName( property, availablePortDir, availablePortName ) ) ) - { -@@ -155,20 +155,19 @@ - /* - * fill dependencies for each record in property->availablePortsDb - */ -- availablePortsDbIDX = MGdbGetRecordQty( property->availablePortsDb ); -- idx = 1; -- while( idx < availablePortsDbIDX ) -+ availablePortsDbQTY = MGdbGetRecordQty( property->availablePortsDb ); -+ availablePortsDbIDX = 1; -+ while( availablePortsDbIDX < availablePortsDbQTY ) - { -- availablePortsDbFlagPtr = MGdbGet( property->availablePortsDb, idx, property->fieldAvailablePortsDbFlag ); -- if( availablePortsDbFlagPtr && strncmp( availablePortsDbFlagPtr, "0", 1 ) == 0 ) -+ if( strncmp( MGdbGet( property->availablePortsDb, availablePortsDbIDX, property->fieldAvailablePortsDbFlag ), "0", 1 ) == 0 ) - { -- strcpy( availablePortDir, MGdbGet( property->availablePortsDb, idx, property->fieldAvailablePortsDbPortDir ) ); -- strcpy( availablePortName, MGdbGet( property->availablePortsDb, idx, property->fieldAvailablePortsDbPortName ) ); -+ strcpy( availablePortDir, MGdbGet( property->availablePortsDb, availablePortsDbIDX, property->fieldAvailablePortsDbPortDir ) ); -+ strcpy( availablePortName, MGdbGet( property->availablePortsDb, availablePortsDbIDX, property->fieldAvailablePortsDbPortName ) ); - rrFillDependencies( property, availablePortName, availablePortDir, counterPtr ); -- availablePortsDbIDX = MGdbGetRecordQty( property->availablePortsDb ); -- idx = 0; -+ availablePortsDbQTY = MGdbGetRecordQty( property->availablePortsDb ); -+ availablePortsDbIDX = 0; - } -- idx++; -+ availablePortsDbIDX++; - } - return( 0 ); - } -@@ -340,7 +339,6 @@ - char* buffer = NULL; - int availablePortsDbIDX = 0; - int bufferSize = 0xffff; -- int errorCode = 0; - - buffer = calloc( bufferSize + 1, 1 ); - -@@ -361,14 +359,10 @@ - return( 1 ); - } - MGdbGoTop( property->availablePortsDb ); -- availablePortDirPtr = MGdbSeek( property->availablePortsDb, property->fieldAvailablePortsDbPortDir, availablePortDir, -- property->fieldAvailablePortsDbPortDir, exact ); -- availablePortsDbIDX = MGdbGetRecno( property->availablePortsDb ) - 1; -- if( ( errorCode = MGdbDelete( property->availablePortsDb, availablePortsDbIDX ) ) ) -- { -- fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGdbDelete", errorCode ); -- return( 1 ); -- } -+ availablePortDirPtr = MGdbSeek( property->availablePortsDb, property->fieldAvailablePortsDbPortDir, availablePortDir, -+ property->fieldAvailablePortsDbPortDir, exact ); -+ availablePortsDbIDX = MGdbGetRecno( property->availablePortsDb ) - 1; -+ property->availablePortsDb = MGdbDelete( property->availablePortsDb, availablePortsDbIDX ); - MGdbAdd( property->availablePortsDb, availablePortName, availablePortDir, "1", NULL); - - return( 0 ); -@@ -435,8 +429,8 @@ - int idx1 = 0; - int idx2 = 0; - -- dependencyPortDir = (char*)calloc( 255, 1 ); -- dependencyPortName = (char*)calloc( 255, 1 ); -+ dependencyPortDir = (char*)calloc( bufferSize, 1 ); -+ dependencyPortName = (char*)calloc( bufferSize, 1 ); - - bufferSize = strlen( buffer ); - idx1 = 0; -diff -ruN ../0.3.3/libMGPM/src/MGPMrSinglePortCreateStatusDb.c ./libMGPM/src/MGPMrSinglePortCreateStatusDb.c ---- ../0.3.3/libMGPM/src/MGPMrSinglePortCreateStatusDb.c Sat Nov 5 21:12:54 2005 -+++ ./libMGPM/src/MGPMrSinglePortCreateStatusDb.c Tue Nov 8 15:53:41 2005 -@@ -52,7 +52,7 @@ - - counterPtr = &counter; - -- availablePortDir = (char*)calloc( 255, 1 ); -+ availablePortDir = (char*)calloc( bufferSize, 1 ); - availablePortName = (char*)calloc( bufferSize, 1 ); - - /*.............................................................*/ -@@ -237,7 +237,6 @@ - char* buffer = NULL; - int availablePortsDbIDX = 0; - int bufferSize = 0xffff; -- int errorCode = 0; - - buffer = calloc( bufferSize + 1, 1 ); - rDependencyParse( property, buffer, availablePortName, availablePortDir, BUILD_DEPENDS, counterPtr ); -@@ -257,13 +256,8 @@ - availablePortDirPtr = MGdbSeek( property->availablePortsDb, property->fieldAvailablePortsDbPortDir, availablePortDir, - property->fieldAvailablePortsDbPortDir, exact ); - availablePortsDbIDX = MGdbGetRecno( property->availablePortsDb ) - 1; -- if( ( errorCode = MGdbDelete( property->availablePortsDb, availablePortsDbIDX ) ) ) -- { -- fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGdbDelete", errorCode ); -- return( 1 ); -- } -+ property->availablePortsDb = MGdbDelete( property->availablePortsDb, availablePortsDbIDX ); - MGdbAdd( property->availablePortsDb, availablePortName, availablePortDir, "1", NULL); -- - return( 0 ); - } - -@@ -328,8 +322,8 @@ - int idx1 = 0; - int idx2 = 0; - -- dependencyPortDir = (char*)calloc( 255, 1 ); -- dependencyPortName = (char*)calloc( 255, 1 ); -+ dependencyPortDir = (char*)calloc( bufferSize, 1 ); -+ dependencyPortName = (char*)calloc( bufferSize, 1 ); - - bufferSize = strlen( buffer ); - idx1 = 0; -diff -ruN ../0.3.3/libMGPM/src/MGPMrSinglePortStatus.c ./libMGPM/src/MGPMrSinglePortStatus.c ---- ../0.3.3/libMGPM/src/MGPMrSinglePortStatus.c Mon Nov 7 09:48:20 2005 -+++ ./libMGPM/src/MGPMrSinglePortStatus.c Tue Nov 8 11:18:04 2005 -@@ -333,6 +333,7 @@ - char* oldDependencyDir, - int* counterPtr ) - { -+ char* availableDependenciesDbDependencyTypePtr = NULL; - char id[] = "rCheckForOldDependencies"; - char exact[] = "exact"; - char* availableDependenciesDbDependencyNamePtr = NULL; -@@ -351,19 +352,20 @@ - * is a BUILD_DEPENDS desired out come is installedPortsDbPortDir with - * a RUN_DEPENDS at finish time - */ -- while( ( availableDependenciesDbDependencyNamePtr = MGdbSeek( property->availableDependenciesDb, -- property->fieldAvailableDependenciesDbPortDir, -- installedPortsDbPortDir, -- property->fieldAvailableDependenciesDbDependencyName, -- exact ) ) ) -+ while( ( availableDependenciesDbDependencyNamePtr = MGdbSeek( property->availableDependenciesDb, -+ property->fieldAvailableDependenciesDbPortDir, -+ installedPortsDbPortDir, -+ property->fieldAvailableDependenciesDbDependencyName, -+ exact ) ) ) - { -- if( strcmp( MGdbGet( property->availableDependenciesDb, -- MGdbGetRecno( property->availableDependenciesDb ) -1, -- property->fieldAvailableDependenciesDbDependType ), "BUILD_DEPENDS" ) == 0 ) -+ availableDependenciesDbDependencyTypePtr = MGdbGet( property->availableDependenciesDb, -+ MGdbGetRecno( property->availableDependenciesDb ) -1, -+ property->fieldAvailableDependenciesDbDependType ); -+ -+ if( availableDependenciesDbDependencyTypePtr && strcmp( availableDependenciesDbDependencyTypePtr, "BUILD_DEPENDS" ) == 0 ) - { - continue; - } -- - break; - } - -diff -ruN ../0.3.3/libMGPM/src/MGPMrUpdate.c ./libMGPM/src/MGPMrUpdate.c ---- ../0.3.3/libMGPM/src/MGPMrUpdate.c Sun Nov 6 05:17:31 2005 -+++ ./libMGPM/src/MGPMrUpdate.c Tue Nov 8 16:34:59 2005 -@@ -69,7 +69,6 @@ - char yes[] = "--yes"; - char* availableDependenciesDbDependencyDirPtr = NULL; - char* availableDependenciesDbDependencyNamePtr = NULL; -- char* availablePortsFlagPtr = NULL; - char* bufferBase = NULL; - char* dependencyDbDependencyPortDirPtr = NULL; - char* dependencyDbDependencyPortNamePtr = NULL; -@@ -272,14 +271,12 @@ - fprintf( stdout, "one more attempt and it will be marked as ignore.\n\n" ); - while( fflush( stdout ) ); - MGdbGoTop( property->strikesDb ); -- strikePtr = MGdbSeek( property->strikesDb, property->fieldStrikesDbPortDir, oldPortDir, property->fieldStrikesIDX, exact ); -- if( ( errorCode = MGdbDelete( property->strikesDb, MGdbGetRecno( property->strikesDb ) - 1 ) ) ) -- { -- fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGdbDelete", errorCode ); -- while( fflush( stdout ) ); -- rCleanUp( property, &localProperty ); -- return( 1 ); -- } -+ strikePtr = MGdbSeek( property->strikesDb, -+ property->fieldStrikesDbPortDir, -+ oldPortDir, -+ property->fieldStrikesIDX, -+ exact ); -+ property->strikesDb = MGdbDelete( property->strikesDb, MGdbGetRecno( property->strikesDb ) - 1 ); - MGdbAdd( property->strikesDb, oldPortDir, "2", NULL ); - if( property->log ) - { -@@ -779,7 +776,8 @@ - MGdbGetRecno( property->availablePortsDb ) - 1, - property->fieldAvailablePortsDbPortName ) ); - while( fflush( stdout ) ); -- MGdbDelete( property->availablePortsDb, MGdbGetRecno( property->availablePortsDb ) - 1 ); -+ property->availablePortsDb = MGdbDelete( property->availablePortsDb, -+ MGdbGetRecno( property->availablePortsDb ) - 1 ); - MGdbGoTop( property->availablePortsDb ); - } - -@@ -1262,19 +1260,17 @@ - if( property->pmMode || property->forced ) - { - MGdbGoTop( property->availablePortsDb ); -- availablePortsFlagPtr = MGdbSeek( property->availablePortsDb, property->fieldAvailablePortsDbPortDir, oldPortDir, -- property->fieldAvailablePortsDbFlag, exact ); -- if( availablePortsFlagPtr && strncmp( availablePortsFlagPtr, "2", 1 ) ) -+ if( strncmp( MGdbSeek( property->availablePortsDb, -+ property->fieldAvailablePortsDbPortDir, -+ oldPortDir, -+ property->fieldAvailablePortsDbFlag, -+ exact ), -+ "2", 1 ) ) - { - availablePortsDbIDX = MGdbGetRecno( property->availablePortsDb ) - 1; - strcpy( localProperty.newPortName, MGdbGet( property->availablePortsDb, availablePortsDbIDX, property->fieldAvailablePortsDbPortName ) ); - strcpy( localProperty.newPortDir, MGdbGet( property->availablePortsDb, availablePortsDbIDX, property->fieldAvailablePortsDbPortDir ) ); -- if( ( errorCode = MGdbDelete( property->availablePortsDb, availablePortsDbIDX ) ) ) -- { -- fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGdbDelete", errorCode ); -- rCleanUp( property, &localProperty ); -- return( 1 ); -- } -+ property->availablePortsDb = MGdbDelete( property->availablePortsDb, availablePortsDbIDX ); - MGdbAdd( property->availablePortsDb, localProperty.newPortName, localProperty.newPortDir, "2", NULL ); - } - } diff -ruN portmanager/files/patch-0.3.3_2 portmanager-0.3.4/files/patch-0.3.3_2 --- portmanager/files/patch-0.3.3_2 Wed Nov 9 12:52:50 2005 +++ portmanager-0.3.4/files/patch-0.3.3_2 Wed Dec 31 16:00:00 1969 @@ -1,1042 +0,0 @@ -diff -ruN ../0.3.3_1/libMGPM/src/MGPMrController.c ./libMGPM/src/MGPMrController.c ---- ../0.3.3_1/libMGPM/src/MGPMrController.c Tue Nov 8 17:05:25 2005 -+++ ./libMGPM/src/MGPMrController.c Tue Nov 8 20:37:08 2005 -@@ -150,14 +150,28 @@ - - if( path && ( strcmp( path, "SHOWLEAVES" ) == 0 ) ) - { -- if( ( errorCode = MGPMrCreateInstalledDb( property ) ) ) -+ if( property->resume == 0 ) /* skip this if portmanager has upgraded/rebuilt its self */ - { -- fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, "MGPMrCreateInstalledDb", errorCode ); -- free( command ); -- free( oldPortDir ); -- free( oldPortName ); -- free( xtermTitle ); -- return( 1 ); -+ if( ( errorCode = MGPMrCreateInstalledDb( property ) ) ) -+ { -+ fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, -+ "MGPMrCreateInstalledDb", errorCode ); -+ free( command ); -+ free( oldPortDir ); -+ free( oldPortName ); -+ free( xtermTitle ); -+ return( 1 ); -+ } -+ if( ( errorCode = MGPMrCreateAllUpdateStatusDb( property ) ) ) -+ { -+ fprintf( stdout, "%s %s error: %s returned errorCode %d\n", id, PACKAGE_VERSION, -+ "MGPMrCreateAllUpdateStatusDb", errorCode ); -+ free( command ); -+ free( oldPortDir ); -+ free( oldPortName ); -+ free( xtermTitle ); -+ return( 1 ); -+ } - } - - if( ( errorCode = MGPMrShowLeaves( property ) ) ) -@@ -217,7 +231,6 @@ - return( 1 ); - } - } -- - - if( ( property->ignoreDb = MGdbCreate( property->ignoreDbFileName, property->fieldignoreDbPortDir, property->fieldIgnoreDbReason, NULL ) ) == NULL ) - { -diff -ruN ../0.3.3_1/libMGPM/src/MGPMrShowLeaves.c ./libMGPM/src/MGPMrShowLeaves.c ---- ../0.3.3_1/libMGPM/src/MGPMrShowLeaves.c Tue Nov 8 17:05:25 2005 -+++ ./libMGPM/src/MGPMrShowLeaves.c Tue Nov 8 21:32:18 2005 -@@ -31,16 +31,22 @@ - - int MGPMrShowLeaves( structProperty* property ) - { -+ FILE* pHandle = NULL; - char exact[] = "exact"; - char id[] = "MGPMrShowLeaves"; -+ char* buffer = NULL; - char* command = NULL; -- char* leafPortDirPtr = NULL; -- char* leafPortNamePtr = NULL; -+ char* leafPortDir = NULL; -+ char* leafPortName = NULL; -+ int bufferIdx = 0; - int bufferSize = 0xffff; - int installedPortsDbIDX = 0; - int installedPortsDbQTY = 0; - -- command = (char*)calloc( bufferSize, 1 ); -+ command = (char*)calloc( bufferSize, 1 ); -+ buffer = (char*)calloc( bufferSize, 1 ); -+ leafPortDir = (char*)calloc( bufferSize, 1 ); -+ leafPortName = (char*)calloc( bufferSize, 1 ); - - if( ( property->installedPortsDb = MGdbOpen( property->installedPortsDbFileName ) ) == NULL ) - { -@@ -49,7 +55,7 @@ - return( 1 ); - } - -- if( ( property->dependencyPortsDb = MGdbOpen( property->dependencyPortsDbFileName ) ) == NULL ) -+ if( ( property->availableDependenciesDb = MGdbOpen( property->availableDependenciesDbFileName ) ) == NULL ) - { - fprintf( stdout, "%s %s error: failed to open %s\n", id, PACKAGE_VERSION, property->dependencyPortsDbFileName ); - perror( "system" ); -@@ -57,9 +63,8 @@ - } - - fprintf( stdout,"%s\n", SINGLE_LINES ); -- fprintf( stdout, "Ports with no ports depending on them as run dependencies AKA \"leaf ports.\"\n" ); -- fprintf( stdout, "These ports may be deinstalled because no other ports rely on them.to run;\"\n" ); -- fprintf( stdout, "however, other ports may rely on these.to build;\"\n" ); -+ fprintf( stdout, "Ports with no ports depending on them to run or build AKA \"leaf ports.\"\n" ); -+ fprintf( stdout, "These ports may be deinstalled because no other ports rely on them.\"\n" ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - -@@ -67,28 +72,47 @@ - installedPortsDbIDX = 1; - while( installedPortsDbIDX < installedPortsDbQTY ) - { -- -- leafPortDirPtr = MGdbGet( property->installedPortsDb, installedPortsDbIDX, property->fieldInstalledPortsDbPortDir ); -- leafPortNamePtr = MGdbGet( property->installedPortsDb, installedPortsDbIDX, property->fieldInstalledPortsDbPortName ); -- MGdbGoTop( property->dependencyPortsDb ); -- if( MGdbSeek( property->dependencyPortsDb, property->fieldDependencyDbPortDir, leafPortDirPtr, property->fieldDependencyDbPortDir, -+ strcpy( leafPortDir, MGdbGet( property->installedPortsDb, installedPortsDbIDX, property->fieldInstalledPortsDbPortDir ) ); -+ strcpy( leafPortName, MGdbGet( property->installedPortsDb, installedPortsDbIDX, property->fieldInstalledPortsDbPortName ) ); -+ MGdbGoTop( property->availableDependenciesDb ); -+ if( MGdbSeek( property->availableDependenciesDb, -+ property->fieldAvailableDependenciesDbDependencyDir, -+ leafPortDir, -+ property->fieldAvailableDependenciesDbDependencyDir, - exact ) == NULL ) - { -- fprintf( stdout, "%s dir -=> %s\n", leafPortNamePtr, leafPortDirPtr ); -+ fprintf( stdout, "%-30s %-30s ", leafPortName, leafPortDir ); - while( fflush( stdout ) ); - strcpy( command, "grep COMMENT " ); - strcat( command, PORTSDIR ); -- strcat( command, leafPortDirPtr ); -+ strcat( command, leafPortDir ); - strcat( command, "/Makefile" ); -- system( command ); -- fprintf( stdout, "%s\n", SINGLE_LINES ); -+ pHandle = popen( command, "r" ); -+ buffer[0] = 0; -+ fread( buffer, bufferSize - 1, 1, pHandle ); -+ pclose( pHandle ); -+ bufferIdx = 0; -+ while( bufferIdx < bufferSize ) -+ { -+ if( buffer[bufferIdx] == LINEFEED ) -+ { -+ buffer[bufferIdx] = 0; -+ break; -+ } -+ bufferIdx++; -+ } -+ fprintf( stdout, "%-25s\n", buffer+9 ); -+ while( fflush( stdout ) ); - } - installedPortsDbIDX++; - } -- fprintf( stdout, "%s\n", SINGLE_LINES ); -+ fprintf( stdout, "%s\n", DOUBLE_LINES ); - while( fflush( stdout ) ); -+ free( buffer ); - free( command ); -+ free( leafPortDir ); -+ free( leafPortName ); - MGdbDestroy( property->installedPortsDb ); -- MGdbDestroy( property->dependencyPortsDb ); -+ MGdbDestroy( property->availableDependenciesDb ); - return(0); - } -diff -ruN ../0.3.3_1/libMGPM/src/MGPMrUpdate.c ./libMGPM/src/MGPMrUpdate.c ---- ../0.3.3_1/libMGPM/src/MGPMrUpdate.c Tue Nov 8 17:05:25 2005 -+++ ./libMGPM/src/MGPMrUpdate.c Wed Nov 9 10:37:20 2005 -@@ -35,6 +35,7 @@ - { - char* afterOptionsFileSize; - char* afterOptionsFileTime; -+ char* batchCheck; - char* beforeOptionsFileSize; - char* beforeOptionsFileTime; - char* buffer; -@@ -70,8 +71,6 @@ - char* availableDependenciesDbDependencyDirPtr = NULL; - char* availableDependenciesDbDependencyNamePtr = NULL; - char* bufferBase = NULL; -- char* dependencyDbDependencyPortDirPtr = NULL; -- char* dependencyDbDependencyPortNamePtr = NULL; - char* installedPortsDbPortNamePtr = NULL; - char* ipPtr = NULL; - char* oldPortDirPtr = NULL; -@@ -82,8 +81,6 @@ - int availableDependenciesDbQTY = 0; - int availablePortsDbIDX = 0; - int bufferSize = 0xffff; -- int dependencyPortsDbIDX = 0; -- int dependencyPortsDbQTY = 0; - int errorCode = 0; - int idx = 0; - int installedPortsDbIDX = 0; -@@ -96,6 +93,7 @@ - - localProperty.afterOptionsFileSize = (char*)calloc( 511, 1 ); - localProperty.afterOptionsFileTime = (char*)calloc( 511, 1 ); -+ localProperty.batchCheck = (char*)calloc( 511, 1 ); - localProperty.beforeOptionsFileSize = (char*)calloc( 511, 1 ); - localProperty.beforeOptionsFileTime = (char*)calloc( 511, 1 ); - localProperty.buffer = (char*)calloc( bufferSize, 1 ); -@@ -111,13 +109,12 @@ - property->availablePortsDb = MGdbOpen( property->availablePortsDbFileName ); - property->commandLineDb = MGdbOpen( property->commandLineDbFileName ); - property->configDb = MGdbOpen( property->configDbFileName ); -- property->dependencyPortsDb = MGdbOpen( property->dependencyPortsDbFileName ); - property->ignoreDb = MGdbOpen( property->ignoreDbFileName ); - property->installedPortsDb = MGdbOpen( property->installedPortsDbFileName ); - property->strikesDb = MGdbOpen( property->strikesDbFileName ); - - /* -- * store work directoy base -+ * store localProperty.workDir - */ - strcpy( localProperty.workDir, "cd " ); - strcat( localProperty.workDir, PORTSDIR ); -@@ -163,9 +160,8 @@ - strcpy( localProperty.optionsDir, localProperty.buffer ); - - /* -- * BEFORE check for /var/db/ports/{oldPortDir} less sub dir -- * if it exists get size/time of options file for later comparison -- * -+ * BEFORE check for /var/db/ports/{port dir name}/options -+ * get size/time of file for later comparison - * - */ - -@@ -182,6 +178,9 @@ - strcpy( localProperty.beforeOptionsFileTime, MGrIntToString( (int)MGrFileTime( localProperty.optionsDir ) ) ); - strcpy( localProperty.beforeOptionsFileSize, MGrIntToString( MGrFileSize( localProperty.optionsDir ) ) ); - -+ /* -+ * Do update in interactive mode (command line switch -ui ) -+ */ - if( property->interactive ) - { - fprintf( stdout, "ok to update/rebuild %s %s (yes/no/auto yes to all) [y/n/a] [y]?\n", oldPortDir, oldPortName ); -@@ -241,9 +240,166 @@ - } - } - -- /* -- * 3 strikes check -- */ -+ /************************************************************************/ -+ /* Command "1" " make -V OPTIONS" */ -+ /************************************************************************/ -+ -+ strcpy( localProperty.batchCheck, "cd " ); -+ strcat( localProperty.batchCheck, PORTSDIR ); -+ strcat( localProperty.batchCheck, oldPortDir ); -+ strcat( localProperty.batchCheck, "; make -V BATCH" ); -+ -+ pHandle = popen( localProperty.batchCheck, "r" ); -+ localProperty.buffer[0] = 0; -+ fread( localProperty.buffer, bufferSize, 1, pHandle ); -+ pclose( pHandle ); -+ idx = 0; -+ while( idx < bufferSize ) -+ { -+ if( localProperty.buffer[idx] == LINEFEED ) -+ { -+ localProperty.buffer[idx] = 0; -+ break; -+ } -+ idx++; -+ } -+ if( strlen( localProperty.buffer ) > 0 ) /* BATCH is defined */ -+ { -+ fprintf( stdout, "%s\n", SINGLE_LINES ); -+ fprintf( stdout, "%s %s:\n\t commands 1 & 2 of 14 OPTIONS check and \"make config\" skipped because BATCH is defined\n", -+ id, PACKAGE_VERSION ); -+ fprintf( stdout, "\t recommend not defining BATCH so options may at least be set to their defaults\n" ); -+ while( fflush( stdout ) ); -+ } -+ else -+ { -+ /* -+ * If no /var/db/ports/{port dir name}/options file exists -+ * yet make -V OPTIONS shows OPTIONS as being defined -+ * make is going to bluescreen, we need to handle that here -+ */ -+ -+ strcpy( localProperty.optionsCheck, "cd " ); -+ strcat( localProperty.optionsCheck, PORTSDIR ); -+ strcat( localProperty.optionsCheck, oldPortDir ); -+ strcat( localProperty.optionsCheck, "; make -V OPTIONS" ); -+ -+ fprintf( stdout, "%s\n", SINGLE_LINES ); -+ fprintf( stdout, "%s %s command: #1 of 14 %s\n", id, PACKAGE_VERSION, localProperty.optionsCheck ); -+ fprintf( stdout, "%s\n", SINGLE_LINES ); -+ while( fflush( stdout ) ); -+ -+ pHandle = popen( localProperty.optionsCheck, "r" ); -+ localProperty.buffer[0] = 0; -+ fread( localProperty.buffer, bufferSize, 1, pHandle ); -+ pclose( pHandle ); -+ /************************************************************************/ -+ /* Command "2" " make conf" */ -+ /************************************************************************/ -+ if( strlen( localProperty.buffer ) > 4 ) -+ { -+ /* -+ * If here we know OPTIONS is defined, now need to know if -+ * /var/db/ports/{package name}/options exists -+ */ -+ fileStream = fopen( localProperty.optionsDir, "r" ); -+ if( fileStream == NULL ) /* no file */ -+ { -+ if( options ) -+ { -+ strcpy( localProperty.command, "cd " ); -+ strcat( localProperty.command, PORTSDIR ); -+ strcat( localProperty.command, oldPortDir ); -+ strcat( localProperty.command, "; make config " ); -+ strcat( localProperty.command, options ); -+ } -+ else -+ { -+ strcpy( localProperty.command, "cd " ); -+ strcat( localProperty.command, PORTSDIR ); -+ strcat( localProperty.command, oldPortDir ); -+ strcat( localProperty.command, "; make config " ); -+ } -+ fprintf( stdout, "%s\n", SINGLE_LINES ); -+ fprintf( stdout, "update %s \n", oldPortName ); -+ fprintf( stdout, "%s %s command: #2 of 14 %s\n", id, PACKAGE_VERSION, localProperty.command ); -+ fprintf( stdout, "%s\n", SINGLE_LINES ); -+ while( fflush( stdout ) ); -+ system(localProperty.command); -+ } -+ else -+ { -+ fclose( fileStream ); -+ } -+ strcpy( localProperty.afterOptionsFileTime, MGrIntToString( (int)MGrFileTime( localProperty.optionsDir ) ) ); -+ strcpy( localProperty.afterOptionsFileSize, MGrIntToString( MGrFileSize( localProperty.optionsDir ) ) ); -+ -+ /* -+ * test to see if any options changed -+ */ -+ if( strlen( localProperty.beforeOptionsFileTime ) != strlen( localProperty.afterOptionsFileTime ) || -+ strlen( localProperty.beforeOptionsFileSize ) != strlen( localProperty.afterOptionsFileSize ) || -+ strcmp( localProperty.beforeOptionsFileTime, localProperty.afterOptionsFileTime ) || -+ strcmp( localProperty.beforeOptionsFileSize, localProperty.afterOptionsFileSize ) ) -+ { -+ /* -+ * options changed so need to purge oldPortDir's records -+ * from availablePortsDb and availableDependenciesDb -+ */ -+ property->optionsChanged = 1; -+ MGdbGoTop( property->availablePortsDb ); -+ while( MGdbSeek( property->availablePortsDb, -+ property->fieldAvailablePortsDbPortDir, -+ oldPortDir, -+ property->fieldAvailablePortsDbPortDir, -+ exact ) ) -+ { -+ fprintf( stdout, "%s info: purging availablePortsDb of old %s record\n", -+ id, -+ MGdbGet( property->availablePortsDb, -+ MGdbGetRecno( property->availablePortsDb ) - 1, -+ property->fieldAvailablePortsDbPortName ) ); -+ while( fflush( stdout ) ); -+ property->availablePortsDb = MGdbDelete( property->availablePortsDb, -+ MGdbGetRecno( property->availablePortsDb ) - 1 ); -+ MGdbGoTop( property->availablePortsDb ); -+ } -+ -+ MGdbGoTop( property->availableDependenciesDb ); -+ while( MGdbSeek( property->availableDependenciesDb, -+ property->fieldAvailableDependenciesDbPortDir, -+ oldPortDir, -+ property->fieldAvailableDependenciesDbPortDir, -+ exact ) ) -+ { -+ fprintf( stdout, "%s info: purging availableDependenciesDb of old %s dependency records %s\n", -+ id, -+ MGdbGet( property->availableDependenciesDb, -+ MGdbGetRecno( property->availableDependenciesDb ) - 1, -+ property->fieldAvailableDependenciesDbPortName ), -+ MGdbGet( property->availableDependenciesDb, -+ MGdbGetRecno( property->availableDependenciesDb ) - 1, -+ property->fieldAvailableDependenciesDbDependencyName ) ); -+ while( fflush( stdout ) ); -+ MGdbDelete( property->availableDependenciesDb, MGdbGetRecno( property->availableDependenciesDb ) - 1 ); -+ MGdbGoTop( property->availableDependenciesDb ); -+ } -+ /* -+ * add oldPortDir's new records back into availablePortsDb -+ * and availableDependenciesDb -+ */ -+ fprintf( stdout, "%s info: adding new/modified %s records\n", id, oldPortDir ); -+ MGPMrSinglePortCreateStatusDb( property, oldPortDir ); -+ rCleanUp( property, &localProperty ); -+ return( 0 ); -+ } -+ } -+ -+ } -+ -+ /************************************************************************/ -+ /* 3 strikes check */ -+ /************************************************************************/ - MGdbGoTop( property->strikesDb ); - strikePtr = MGdbSeek( property->strikesDb, property->fieldStrikesDbPortDir, oldPortDir, property->fieldStrikesIDX, exact ); - if( strikePtr ) -@@ -288,8 +444,9 @@ - system( localProperty.command ); - } - /* --dualOriginCheck( property, oldPortName ); --*/ -+ * dualOriginCheck( property, oldPortName ); used to be here in old portmanager ver < 0.3.1, seems to be no longer -+ * needed, keep this note just in case -+ */ - } - } - else -@@ -301,7 +458,7 @@ - options = MGdbSeek( property->configDb, property->fieldConfigDbKey, oldPortDir, property->fieldConfigDbValue, exact ); - - /************************************************************************/ -- /* Command "1" " make check-conflicts " */ -+ /* Command "3" " make check-conflicts " */ - /************************************************************************/ - if( options ) - { -@@ -320,7 +477,7 @@ - } - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stdout, "checking for conflicts before building %s\n", oldPortName ); -- fprintf( stdout, "%s %s command: #1 of 8 %s\n", id, PACKAGE_VERSION, localProperty.command ); -+ fprintf( stdout, "%s %s command: #3 of 14 %s\n", id, PACKAGE_VERSION, localProperty.command ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - if( ( errorCode = system(localProperty.command) ) ) -@@ -492,7 +649,7 @@ - return( 0 ); - } - /************************************************************************/ -- /* Command "1.1" " make -V FORBIDDEN " */ -+ /* Command "4" " make -V FORBIDDEN " */ - /************************************************************************/ - if( ( errorCode = rPortBrokeCheck( property, options, oldPortDir, oldPortName, FORBIDDEN ) ) ) - { -@@ -511,8 +668,9 @@ - } - - } -+ - /************************************************************************/ -- /* Command "1.2" " make -V BROKEN " */ -+ /* Command "5" " make -V BROKEN " */ - /************************************************************************/ - if( ( errorCode = rPortBrokeCheck( property, options, oldPortDir, oldPortName, BROKEN ) ) ) - { -@@ -531,8 +689,9 @@ - } - - } -+ - /************************************************************************/ -- /* Command "1.3" " make -V IGNORE " */ -+ /* Command "6" " make -V IGNORE " */ - /************************************************************************/ - if( ( errorCode = rPortBrokeCheck( property, options, oldPortDir, oldPortName, IGNORE ) ) ) - { -@@ -551,99 +710,53 @@ - } - - } -+ - /************************************************************************/ -- /* Command "2" " make clean " */ -+ /* Command "7" " make clean " */ - /************************************************************************/ - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stdout, "intitial clean of work directories \n" ); -- fprintf( stdout, "%s %s command: #2 of 8: \n", id, PACKAGE_VERSION ); -+ fprintf( stdout, "%s %s command: #7 of 14: \n", id, PACKAGE_VERSION ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - -- if( property->pmMode == SINGLE ) -- { -- availableDependenciesDbQTY = MGdbGetRecordQty( property->availableDependenciesDb ); -- MGdbGoTop( property->availableDependenciesDb ); -- oldPortDirPtr = MGdbSeek( property->availableDependenciesDb, -- property->fieldAvailableDependenciesDbPortDir, -- oldPortDir, -- property->fieldAvailableDependenciesDbPortDir, -- exact ); -+ availableDependenciesDbQTY = MGdbGetRecordQty( property->availableDependenciesDb ); -+ MGdbGoTop( property->availableDependenciesDb ); -+ oldPortDirPtr = MGdbSeek( property->availableDependenciesDb, -+ property->fieldAvailableDependenciesDbPortDir, -+ oldPortDir, -+ property->fieldAvailableDependenciesDbPortDir, -+ exact ); - -- availableDependenciesDbIDX = MGdbGetRecno( property->availableDependenciesDb )-1; -+ availableDependenciesDbIDX = MGdbGetRecno( property->availableDependenciesDb )-1; -+ -+ availableDependenciesDbDependencyDirPtr = MGdbGet( property->availableDependenciesDb, -+ availableDependenciesDbIDX, -+ property->fieldAvailableDependenciesDbDependencyDir ); -+ -+ availableDependenciesDbDependencyNamePtr = MGdbGet( property->availableDependenciesDb, -+ availableDependenciesDbIDX, -+ property->fieldAvailableDependenciesDbDependencyName ); - -+ while( oldPortDirPtr && availableDependenciesDbIDX < availableDependenciesDbQTY && strcmp( oldPortDir, oldPortDirPtr ) == 0 ) -+ { -+ rCleanDir( availableDependenciesDbDependencyDirPtr, localProperty.workDir ); -+ -+ oldPortDirPtr = MGdbGet( property->availableDependenciesDb, -+ availableDependenciesDbIDX, -+ property->fieldAvailableDependenciesDbPortDir ); - availableDependenciesDbDependencyDirPtr = MGdbGet( property->availableDependenciesDb, - availableDependenciesDbIDX, - property->fieldAvailableDependenciesDbDependencyDir ); -- - availableDependenciesDbDependencyNamePtr = MGdbGet( property->availableDependenciesDb, - availableDependenciesDbIDX, - property->fieldAvailableDependenciesDbDependencyName ); -- -- while( oldPortDirPtr && availableDependenciesDbIDX < availableDependenciesDbQTY && strcmp( oldPortDir, oldPortDirPtr ) == 0 ) -- { -- rCleanDir( availableDependenciesDbDependencyDirPtr, localProperty.workDir ); -- -- oldPortDirPtr = MGdbGet( property->availableDependenciesDb, -- availableDependenciesDbIDX, -- property->fieldAvailableDependenciesDbPortDir ); -- availableDependenciesDbDependencyDirPtr = MGdbGet( property->availableDependenciesDb, -- availableDependenciesDbIDX, -- property->fieldAvailableDependenciesDbDependencyDir ); -- availableDependenciesDbDependencyNamePtr = MGdbGet( property->availableDependenciesDb, -- availableDependenciesDbIDX, -- property->fieldAvailableDependenciesDbDependencyName ); -- availableDependenciesDbIDX++; -- } -- rCleanDir( oldPortDir, localProperty.workDir ); -- } -- else -- { -- dependencyPortsDbQTY = MGdbGetRecordQty( property->dependencyPortsDb ); -- -- MGdbGoTop( property->dependencyPortsDb ); -- -- oldPortDirPtr = MGdbSeek( property->dependencyPortsDb, -- property->fieldDependencyDbPortDir, -- oldPortDir, -- property->fieldDependencyDbPortDir, -- exact ); -- -- dependencyPortsDbIDX = MGdbGetRecno( property->dependencyPortsDb )-1; -- -- dependencyDbDependencyPortDirPtr = MGdbGet( property->dependencyPortsDb, -- dependencyPortsDbIDX, -- property->fieldDependencyDbDependencyPortDir ); -- -- dependencyDbDependencyPortNamePtr = MGdbGet( property->dependencyPortsDb, -- dependencyPortsDbIDX, -- property->fieldDependencyDbDependencyPortName ); -- -- while( oldPortDirPtr && dependencyPortsDbIDX < dependencyPortsDbQTY && strcmp( oldPortDir, oldPortDirPtr ) == 0 ) -- { -- rCleanDir( dependencyDbDependencyPortDirPtr, localProperty.workDir ); -- -- oldPortDirPtr = MGdbSeek( property->dependencyPortsDb, -- property->fieldDependencyDbPortDir, -- oldPortDir, -- property->fieldDependencyDbPortDir, -- exact ); -- -- dependencyDbDependencyPortDirPtr = MGdbGet( property->dependencyPortsDb, -- dependencyPortsDbIDX, -- property->fieldDependencyDbDependencyPortDir ); -- -- dependencyDbDependencyPortNamePtr = MGdbGet( property->dependencyPortsDb, -- dependencyPortsDbIDX, -- property->fieldDependencyDbDependencyPortName ); -- -- dependencyPortsDbIDX++; -- } -- rCleanDir( oldPortDir, localProperty.workDir ); -+ availableDependenciesDbIDX++; - } -+ rCleanDir( oldPortDir, localProperty.workDir ); - - /************************************************************************/ -- /* Command "3.1" " make fetch" */ -+ /* Command "8" make fetch */ - /************************************************************************/ - strcpy( localProperty.command, "cd " ); - strcat( localProperty.command, PORTSDIR ); -@@ -655,7 +768,7 @@ - } - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stdout, "fetch %s \n", oldPortName ); -- fprintf( stdout, "%s %s command: #3.1 of 8 %s\n", id, PACKAGE_VERSION, localProperty.command ); -+ fprintf( stdout, "%s %s command: #8 of 14 %s\n", id, PACKAGE_VERSION, localProperty.command ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - if( ( errorCode = system(localProperty.command) ) ) -@@ -676,143 +789,8 @@ - return(0); - } - -- -- /************************************************************************/ -- /* Command "3.2" " make -V OPTIONS" */ -- /************************************************************************/ -- -- /* -- * If no /var/db/ports/{package name}/options file exists -- * yet make -V OPTIONS shows OPTIONS as being defined -- * make is going to bluescreen, we need to handle that here -- */ -- -- strcpy( localProperty.optionsCheck, "cd " ); -- strcat( localProperty.optionsCheck, PORTSDIR ); -- strcat( localProperty.optionsCheck, oldPortDir ); -- strcat( localProperty.optionsCheck, "; make -V OPTIONS" ); -- -- fprintf( stdout, "%s\n", SINGLE_LINES ); -- fprintf( stdout, "%s %s command: #3.2 of 8 %s\n", id, PACKAGE_VERSION, localProperty.optionsCheck ); -- fprintf( stdout, "%s\n", SINGLE_LINES ); -- while( fflush( stdout ) ); -- -- pHandle = popen( localProperty.optionsCheck, "r" ); -- localProperty.buffer[0] = 0; -- fread( localProperty.buffer, bufferSize, 1, pHandle ); -- pclose( pHandle ); - /************************************************************************/ -- /* Command "3.3" " make conf" */ -- /************************************************************************/ -- if( strlen( localProperty.buffer ) > 4 ) -- { -- /* -- * If here we know OPTIONS is defined, now need to know if -- * /var/db/ports/{package name}/options exists -- */ -- fileStream = fopen( localProperty.optionsDir, "r" ); -- if( fileStream == NULL ) /* no file */ -- { -- if( options ) -- { -- strcpy( localProperty.command, "cd " ); -- strcat( localProperty.command, PORTSDIR ); -- strcat( localProperty.command, oldPortDir ); -- strcat( localProperty.command, "; make config " ); -- strcat( localProperty.command, options ); -- } -- else -- { -- strcpy( localProperty.command, "cd " ); -- strcat( localProperty.command, PORTSDIR ); -- strcat( localProperty.command, oldPortDir ); -- strcat( localProperty.command, "; make config " ); -- } -- fprintf( stdout, "%s\n", SINGLE_LINES ); -- fprintf( stdout, "update %s \n", oldPortName ); -- fprintf( stdout, "%s %s command: #3.3 of 8 %s\n", id, PACKAGE_VERSION, localProperty.command ); -- fprintf( stdout, "%s\n", SINGLE_LINES ); -- while( fflush( stdout ) ); -- system(localProperty.command); -- } -- else -- { -- fclose( fileStream ); -- } -- strcpy( localProperty.afterOptionsFileTime, MGrIntToString( (int)MGrFileTime( localProperty.optionsDir ) ) ); -- strcpy( localProperty.afterOptionsFileSize, MGrIntToString( MGrFileSize( localProperty.optionsDir ) ) ); -- -- /* -- * test to see if any options changed -- */ -- if( strlen( localProperty.beforeOptionsFileTime ) != strlen( localProperty.afterOptionsFileTime ) || -- strlen( localProperty.beforeOptionsFileSize ) != strlen( localProperty.afterOptionsFileSize ) || -- strcmp( localProperty.beforeOptionsFileTime, localProperty.afterOptionsFileTime ) || -- strcmp( localProperty.beforeOptionsFileSize, localProperty.afterOptionsFileSize ) ) -- { --fprintf( stdout, "%s debug 01: beforeOptionsFileTime-=>%s afterOptionsFileTime-=>%s beforeOptionsFileSize-=>%s afterOptionsFileSize-=>%s\n", -- id, -- localProperty.beforeOptionsFileTime, -- localProperty.afterOptionsFileTime, -- localProperty.beforeOptionsFileSize, -- localProperty.afterOptionsFileSize ); --while( fflush( stdout ) ); -- -- /* -- * options changed so need to purge oldPortDir's records -- * from availablePortsDb and availableDependenciesDb -- */ -- property->optionsChanged = 1; -- MGdbGoTop( property->availablePortsDb ); -- while( MGdbSeek( property->availablePortsDb, -- property->fieldAvailablePortsDbPortDir, -- oldPortDir, -- property->fieldAvailablePortsDbPortDir, -- exact ) ) -- { -- fprintf( stdout, "%s info: purging availablePortsDb of old %s record\n", -- id, -- MGdbGet( property->availablePortsDb, -- MGdbGetRecno( property->availablePortsDb ) - 1, -- property->fieldAvailablePortsDbPortName ) ); -- while( fflush( stdout ) ); -- property->availablePortsDb = MGdbDelete( property->availablePortsDb, -- MGdbGetRecno( property->availablePortsDb ) - 1 ); -- MGdbGoTop( property->availablePortsDb ); -- } -- -- MGdbGoTop( property->availableDependenciesDb ); -- while( MGdbSeek( property->availableDependenciesDb, -- property->fieldAvailableDependenciesDbPortDir, -- oldPortDir, -- property->fieldAvailableDependenciesDbPortDir, -- exact ) ) -- { -- fprintf( stdout, "%s info: purging availableDependenciesDb of old %s dependency records %s\n", -- id, -- MGdbGet( property->availableDependenciesDb, -- MGdbGetRecno( property->availableDependenciesDb ) - 1, -- property->fieldAvailableDependenciesDbPortName ), -- MGdbGet( property->availableDependenciesDb, -- MGdbGetRecno( property->availableDependenciesDb ) - 1, -- property->fieldAvailableDependenciesDbDependencyName ) ); -- while( fflush( stdout ) ); -- MGdbDelete( property->availableDependenciesDb, MGdbGetRecno( property->availableDependenciesDb ) - 1 ); -- MGdbGoTop( property->availableDependenciesDb ); -- } -- /* -- * add oldPortDir's new records back into availablePortsDb -- * and availableDependenciesDb -- */ -- fprintf( stdout, "%s info: adding new/modified %s records\n", id, oldPortDir ); -- MGPMrSinglePortCreateStatusDb( property, oldPortDir ); -- rCleanUp( property, &localProperty ); -- return( 0 ); -- } -- } -- -- /************************************************************************/ -- /* Command "3.4" " make" */ -+ /* Command "9" " make" */ - /************************************************************************/ - if( options ) - { -@@ -831,7 +809,7 @@ - } - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stdout, "update %s \n", oldPortName ); -- fprintf( stdout, "%s %s command: #3.4 of 8 %s\n", id, PACKAGE_VERSION, localProperty.command ); -+ fprintf( stdout, "%s %s command: #9 of 14 %s\n", id, PACKAGE_VERSION, localProperty.command ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - if( ( errorCode = system(localProperty.command) ) ) -@@ -852,13 +830,13 @@ - return(0); - } - /************************************************************************/ -- /* Command "4" " pkg_create -b " */ -+ /* Command "10" pkg_create -b */ - /************************************************************************/ - if( strcmp( oldPortName, "not installed" ) == 0 ) - { - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stdout, "backing up installed %s before removing it \n", oldPortName ); -- fprintf( stdout, "%s %s command: #4 of 8 N/A - new port\n", id, PACKAGE_VERSION ); -+ fprintf( stdout, "%s %s command: #10 of 14 N/A - new port\n", id, PACKAGE_VERSION ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - } -@@ -871,13 +849,13 @@ - - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stdout, "backing up installed %s before removing it \n", oldPortName ); -- fprintf( stdout, "%s %s command: #4 of 8 %s\n", id, PACKAGE_VERSION, localProperty.command ); -+ fprintf( stdout, "%s %s command: #10 of 14 %s\n", id, PACKAGE_VERSION, localProperty.command ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - system(localProperty.command); - } - /************************************************************************/ -- /* Command "5" " make deinstall " */ -+ /* Command "11" " make deinstall " */ - /************************************************************************/ - /* - * inforced mass update mode portmanager CANNOT loose its databases -@@ -934,7 +912,7 @@ - { - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stdout, "removing old %s \n", oldPortName ); -- fprintf( stdout, "%s %s command: #5 of 8 N/A new port\n", id, PACKAGE_VERSION ); -+ fprintf( stdout, "%s %s command: #11 of 14 N/A new port\n", id, PACKAGE_VERSION ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - } -@@ -944,7 +922,7 @@ - strcat( localProperty.command, oldPortName); - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stdout, "removing old %s \n", oldPortName ); -- fprintf( stdout, "%s %s command: #5 of 8 %s\n", id, PACKAGE_VERSION, localProperty.command ); -+ fprintf( stdout, "%s %s command: #11 of 14 %s\n", id, PACKAGE_VERSION, localProperty.command ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - if( ( system(localProperty.command) ) ) -@@ -957,7 +935,7 @@ - - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stdout, "trying one more way to remove %s...\n", oldPortName ); -- fprintf( stdout, "%s %s command: #5 of 8 %s\n", id, PACKAGE_VERSION, localProperty.command ); -+ fprintf( stdout, "%s %s command: #11 of 14 %s\n", id, PACKAGE_VERSION, localProperty.command ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - system(localProperty.command); -@@ -965,7 +943,7 @@ - } - } - /************************************************************************/ -- /* Command "6" " make reinstall " */ -+ /* Command "12" make reinstall */ - /************************************************************************/ - if( options ) - { -@@ -984,7 +962,7 @@ - } - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stdout, "installing updated %s \n", oldPortDir ); -- fprintf( stdout, "%s %s command: #6 of 8 %s\n", id, PACKAGE_VERSION, localProperty.command ); -+ fprintf( stdout, "%s %s command: #12 of 14 %s\n", id, PACKAGE_VERSION, localProperty.command ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - if( ( errorCode = system( localProperty.command ) ) ) -@@ -1007,7 +985,7 @@ - strcat(localProperty.command, ".tgz"); - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stderr, "restoring original port from backup \n" ); -- fprintf( stderr, "%s %s command: #6!! ***Emergancy restore*** %s\n", id, PACKAGE_VERSION, localProperty.command ); -+ fprintf( stderr, "%s %s command: #12 of 14!! ***Emergancy restore*** %s\n", id, PACKAGE_VERSION, localProperty.command ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - if( ( errorCode = system( localProperty.command ) ) ) -@@ -1057,14 +1035,14 @@ - strcat( localProperty.command, ".tgz" ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stderr, "deleting backup copy, installation of updated %s successful\n", oldPortDir ); -- fprintf( stdout, "%s %s command: #6 of 8 %s\n", id, PACKAGE_VERSION, localProperty.command ); -+ fprintf( stdout, "%s %s command: #12 of 14 %s\n", id, PACKAGE_VERSION, localProperty.command ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - system( localProperty.command ); - } - } - /************************************************************************/ -- /* Command "7" " make package " */ -+ /* Command "13" make package */ - /************************************************************************/ - if( property->backUp ) - { -@@ -1085,7 +1063,7 @@ - } - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stderr, "making package of updated %s \n", oldPortDir ); -- fprintf( stdout, "%s %s command: #7 of 8 %s\n", id, PACKAGE_VERSION, localProperty.command ); -+ fprintf( stdout, "%s %s command: #13 of 14 %s\n", id, PACKAGE_VERSION, localProperty.command ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - system(localProperty.command); -@@ -1098,11 +1076,11 @@ - while( fflush( stdout ) ); - } - /************************************************************************/ -- /* Command "8" " make clean " */ -+ /* Command "14" make clean */ - /************************************************************************/ - fprintf( stdout, "%s\n", SINGLE_LINES ); - fprintf( stderr, "terminal clean of work directories\n" ); -- fprintf( stdout, "%s %s command: #8 of 8\n", id, PACKAGE_VERSION ); -+ fprintf( stdout, "%s %s command: #14 of 14\n", id, PACKAGE_VERSION ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - while( fflush( stdout ) ); - -@@ -1116,87 +1094,40 @@ - } - else - { -- if( property->pmMode == SINGLE ) -- { -- availableDependenciesDbQTY = MGdbGetRecordQty( property->availableDependenciesDb ); -- MGdbGoTop( property->availableDependenciesDb ); -- oldPortDirPtr = MGdbSeek( property->availableDependenciesDb, -- property->fieldAvailableDependenciesDbPortDir, -- oldPortDir, -- property->fieldAvailableDependenciesDbPortDir, -- exact ); -+ availableDependenciesDbQTY = MGdbGetRecordQty( property->availableDependenciesDb ); -+ MGdbGoTop( property->availableDependenciesDb ); -+ oldPortDirPtr = MGdbSeek( property->availableDependenciesDb, -+ property->fieldAvailableDependenciesDbPortDir, -+ oldPortDir, -+ property->fieldAvailableDependenciesDbPortDir, -+ exact ); -+ -+ availableDependenciesDbIDX = MGdbGetRecno( property->availableDependenciesDb )-1; -+ -+ availableDependenciesDbDependencyDirPtr = MGdbGet( property->availableDependenciesDb, -+ availableDependenciesDbIDX, -+ property->fieldAvailableDependenciesDbDependencyDir ); -+ -+ availableDependenciesDbDependencyNamePtr = MGdbGet( property->availableDependenciesDb, -+ availableDependenciesDbIDX, -+ property->fieldAvailableDependenciesDbDependencyName ); - -- availableDependenciesDbIDX = MGdbGetRecno( property->availableDependenciesDb )-1; -+ while( oldPortDirPtr && availableDependenciesDbIDX < availableDependenciesDbQTY && strcmp( oldPortDir, oldPortDirPtr ) == 0 ) -+ { -+ rCleanDir( availableDependenciesDbDependencyDirPtr, localProperty.workDir ); - -+ oldPortDirPtr = MGdbGet( property->availableDependenciesDb, -+ availableDependenciesDbIDX, -+ property->fieldAvailableDependenciesDbPortDir ); - availableDependenciesDbDependencyDirPtr = MGdbGet( property->availableDependenciesDb, - availableDependenciesDbIDX, - property->fieldAvailableDependenciesDbDependencyDir ); -- - availableDependenciesDbDependencyNamePtr = MGdbGet( property->availableDependenciesDb, - availableDependenciesDbIDX, - property->fieldAvailableDependenciesDbDependencyName ); -- -- while( oldPortDirPtr && availableDependenciesDbIDX < availableDependenciesDbQTY && strcmp( oldPortDir, oldPortDirPtr ) == 0 ) -- { -- rCleanDir( availableDependenciesDbDependencyDirPtr, localProperty.workDir ); -- -- oldPortDirPtr = MGdbGet( property->availableDependenciesDb, -- availableDependenciesDbIDX, -- property->fieldAvailableDependenciesDbPortDir ); -- availableDependenciesDbDependencyDirPtr = MGdbGet( property->availableDependenciesDb, -- availableDependenciesDbIDX, -- property->fieldAvailableDependenciesDbDependencyDir ); -- availableDependenciesDbDependencyNamePtr = MGdbGet( property->availableDependenciesDb, -- availableDependenciesDbIDX, -- property->fieldAvailableDependenciesDbDependencyName ); -- availableDependenciesDbIDX++; -- } -- rCleanDir( oldPortDir, localProperty.workDir ); -- } -- else -- { -- dependencyPortsDbQTY = MGdbGetRecordQty( property->dependencyPortsDb ); -- -- MGdbGoTop( property->dependencyPortsDb ); -- -- oldPortDirPtr = MGdbSeek( property->dependencyPortsDb, -- property->fieldDependencyDbPortDir, -- oldPortDir, -- property->fieldDependencyDbPortDir, -- exact ); -- -- dependencyPortsDbIDX = MGdbGetRecno( property->dependencyPortsDb )-1; -- -- dependencyDbDependencyPortDirPtr = MGdbGet( property->dependencyPortsDb, -- dependencyPortsDbIDX, -- property->fieldDependencyDbDependencyPortDir ); -- -- dependencyDbDependencyPortNamePtr = MGdbGet( property->dependencyPortsDb, -- dependencyPortsDbIDX, -- property->fieldDependencyDbDependencyPortName ); -- -- while( oldPortDirPtr && dependencyPortsDbIDX < dependencyPortsDbQTY && strcmp( oldPortDir, oldPortDirPtr ) == 0 ) -- { -- rCleanDir( dependencyDbDependencyPortDirPtr, localProperty.workDir ); -- -- oldPortDirPtr = MGdbSeek( property->dependencyPortsDb, -- property->fieldDependencyDbPortDir, -- oldPortDir, -- property->fieldDependencyDbPortDir, -- exact ); -- -- dependencyDbDependencyPortDirPtr = MGdbGet( property->dependencyPortsDb, -- dependencyPortsDbIDX, -- property->fieldDependencyDbDependencyPortDir ); -- -- dependencyDbDependencyPortNamePtr = MGdbGet( property->dependencyPortsDb, -- dependencyPortsDbIDX, -- property->fieldDependencyDbDependencyPortName ); -- -- dependencyPortsDbIDX++; -- } -- rCleanDir( oldPortDir, localProperty.workDir ); -+ availableDependenciesDbIDX++; - } -+ rCleanDir( oldPortDir, localProperty.workDir ); - } - - /* -@@ -1286,13 +1217,13 @@ - MGdbDestroy( property->availablePortsDb ); - MGdbDestroy( property->commandLineDb ); - MGdbDestroy( property->configDb ); -- MGdbDestroy( property->dependencyPortsDb ); - MGdbDestroy( property->ignoreDb ); - MGdbDestroy( property->installedPortsDb ); - MGdbDestroy( property->strikesDb ); - - free( localProperty->afterOptionsFileSize ); - free( localProperty->afterOptionsFileTime ); -+ free( localProperty->batchCheck ); - free( localProperty->beforeOptionsFileSize ); - free( localProperty->beforeOptionsFileTime ); - free( localProperty->buffer ); -diff -ruN ../0.3.3_1/programmer-notes.txt ./programmer-notes.txt ---- ../0.3.3_1/programmer-notes.txt Tue Nov 8 17:05:25 2005 -+++ ./programmer-notes.txt Wed Nov 9 10:46:58 2005 -@@ -1,13 +1,13 @@ - portmanager program overview - --Must do before releasing -+TODO list - - auto stop/start of programs? -- dual origin - move database files to /var/db/portmanager - test in 6.0 -+ use signal to abort only current build? -+ use signal to off/on inteactive mode? - use signal to shutdown with c -- valgrind clean - c/w (yes/no/auto yes to all) [y/n/a] [y] - c/w --resume option for forced modes - c/w -sl -@@ -20,12 +20,14 @@ - c/w get ignored ports from pm-020.conf working - c/w no packages option - c/w put an inkeys on conflicting port removal -+c/w respect a defined BATCH=1 - c/w seperate make/make fetch for better logging of errors - c/w test emergency restore - c/w test moved ports - c/w three strikes - c/w update man pages - c/w update web site -+inw valgrind clean - - portmanager.c - passes argv, arc to MGPMrCommandLine.c - diff -ruN portmanager/files/patch-0.3.3_3 portmanager-0.3.4/files/patch-0.3.3_3 --- portmanager/files/patch-0.3.3_3 Thu Nov 10 16:32:35 2005 +++ portmanager-0.3.4/files/patch-0.3.3_3 Wed Dec 31 16:00:00 1969 @@ -1,719 +0,0 @@ -diff -ruN ../0.3.3_2/libMGPM/src/MGPMrCreateAllUpdateStatusDb.c ./libMGPM/src/MGPMrCreateAllUpdateStatusDb.c ---- ../0.3.3_2/libMGPM/src/MGPMrCreateAllUpdateStatusDb.c Tue Nov 8 17:05:25 2005 -+++ ./libMGPM/src/MGPMrCreateAllUpdateStatusDb.c Thu Nov 10 07:57:49 2005 -@@ -159,7 +159,9 @@ - availablePortsDbIDX = 1; - while( availablePortsDbIDX < availablePortsDbQTY ) - { -- if( strncmp( MGdbGet( property->availablePortsDb, availablePortsDbIDX, property->fieldAvailablePortsDbFlag ), "0", 1 ) == 0 ) -+ if( MGdbGet( property->availablePortsDb, availablePortsDbIDX, property->fieldAvailablePortsDbFlag ) -+ && -+ strncmp( MGdbGet( property->availablePortsDb, availablePortsDbIDX, property->fieldAvailablePortsDbFlag ), "0", 1 ) == 0 ) - { - strcpy( availablePortDir, MGdbGet( property->availablePortsDb, availablePortsDbIDX, property->fieldAvailablePortsDbPortDir ) ); - strcpy( availablePortName, MGdbGet( property->availablePortsDb, availablePortsDbIDX, property->fieldAvailablePortsDbPortName ) ); -diff -ruN ../0.3.3_2/libMGPM/src/MGPMrReadConfigure.c ./libMGPM/src/MGPMrReadConfigure.c ---- ../0.3.3_2/libMGPM/src/MGPMrReadConfigure.c Tue Nov 8 17:05:25 2005 -+++ ./libMGPM/src/MGPMrReadConfigure.c Wed Nov 9 20:01:21 2005 -@@ -93,6 +93,24 @@ - strcat( command, property->configConfFileName ); - system( command ); - } -+ strcpy( command, "chmod 0600 " ); -+ strcat( command, property->configConfFileName ); -+ system( command ); -+ -+ strcpy( command, "chmod 0600 " ); -+ strcat( command, property->configConfFileName ); -+ strcat( command, ".SAMPLE " ); -+ system( command ); -+ -+ strcpy( command, "chown root:wheel " ); -+ strcat( command, property->configConfFileName ); -+ system( command ); -+ -+ strcpy( command, "chown root:wheel " ); -+ strcat( command, property->configConfFileName ); -+ strcat( command, ".SAMPLE " ); -+ system( command ); -+ - /*********************/ - /* parse pm-020.conf */ - /*********************/ -diff -ruN ../0.3.3_2/libMGPM/src/MGPMrShowLeavesDelete.c ./libMGPM/src/MGPMrShowLeavesDelete.c ---- ../0.3.3_2/libMGPM/src/MGPMrShowLeavesDelete.c Tue Nov 8 17:05:25 2005 -+++ ./libMGPM/src/MGPMrShowLeavesDelete.c Thu Nov 10 01:03:17 2005 -@@ -30,17 +30,17 @@ - #include - #include - --int nuke( char* leafPortDirPtr ); -+int nuke( char* leafPortDir ); - int rebuildDb( structProperty* property, int* installedPortsDbQTY ); --int removePort( structProperty* property, char* leafPortNamePtr, int installedPortsDbIDX ); -+int removePort( structProperty* property, char* leafPortName, int installedPortsDbIDX ); - - int MGPMrShowLeavesDelete( structProperty* property ) - { - char exact[] = "exact"; - char id[] = "MGPMrShowLeavesDelete"; - char* command = NULL; -- char* leafPortDirPtr = NULL; -- char* leafPortNamePtr = NULL; -+ char* leafPortDir = NULL; -+ char* leafPortName = NULL; - char* pkgDescFile = NULL; - char* portDirPtr = NULL; - char* portTypePtr = NULL; -@@ -49,8 +49,10 @@ - int installedPortsDbQTY = 0; - int key = 1; - -- pkgDescFile = (char*)calloc( bufferSize, 1 ); -- command = (char*)calloc( bufferSize, 1 ); -+ command = calloc( bufferSize, 1 ); -+ leafPortDir = calloc( bufferSize, 1 ); -+ leafPortName = calloc( bufferSize, 1 ); -+ pkgDescFile = calloc( bufferSize, 1 ); - - if( ( property->ignoreDb = MGdbOpen( property->ignoreDbFileName ) ) == NULL ) - { -@@ -84,8 +86,8 @@ - installedPortsDbIDX = 1; - while( installedPortsDbIDX < installedPortsDbQTY ) - { -- leafPortDirPtr = MGdbGet( property->installedPortsDb, installedPortsDbIDX, property->fieldInstalledPortsDbPortDir ); -- leafPortNamePtr = MGdbGet( property->installedPortsDb, installedPortsDbIDX, property->fieldInstalledPortsDbPortName ); -+ strcpy( leafPortDir, MGdbGet( property->installedPortsDb, installedPortsDbIDX, property->fieldInstalledPortsDbPortDir ) ); -+ strcpy( leafPortName, MGdbGet( property->installedPortsDb, installedPortsDbIDX, property->fieldInstalledPortsDbPortName ) ); - - /* - * check for no run depends -@@ -93,7 +95,7 @@ - MGdbGoTop( property->dependencyPortsDb ); - portDirPtr = MGdbSeek( property->dependencyPortsDb, - property->fieldDependencyDbDependencyPortDir, -- leafPortDirPtr, -+ leafPortDir, - property->fieldDependencyDbDependencyPortDir, - exact ); - -@@ -105,7 +107,7 @@ - MGdbGoTop( property->availableDependenciesDb ); - portTypePtr = MGdbSeek( property->availableDependenciesDb, - property->fieldAvailableDependenciesDbDependencyDir, -- leafPortDirPtr, -+ leafPortDir, - property->fieldAvailableDependenciesDbDependType, - exact ); - -@@ -113,7 +115,7 @@ - { - portTypePtr = MGdbSeek( property->availableDependenciesDb, - property->fieldAvailableDependenciesDbDependencyDir, -- leafPortDirPtr, -+ leafPortDir, - property->fieldAvailableDependenciesDbDependType, - exact ); - } -@@ -132,11 +134,11 @@ - fprintf( stdout, "however, other ports may rely on these to build.\"\n" ); - fprintf( stdout, "%s\n", SINGLE_LINES ); - -- fprintf( stdout, "%s dir -=> %s\n\n", leafPortNamePtr, leafPortDirPtr ); -+ fprintf( stdout, "%s dir -=> %s\n\n", leafPortName, leafPortDir ); - while( fflush( stdout ) ); - - strcpy( pkgDescFile, PORTSDIR ); -- strcat( pkgDescFile, leafPortDirPtr ); -+ strcat( pkgDescFile, leafPortDir ); - strcat( pkgDescFile, "/pkg-descr" ); - - if( MGrIfFileExist( pkgDescFile ) ) -@@ -150,7 +152,7 @@ - { - strcpy( command, "grep COMMENT " ); - strcat( command, PORTSDIR ); -- strcat( command, leafPortDirPtr ); -+ strcat( command, leafPortDir ); - strcat( command, "/Makefile" ); - system( command ); - } -@@ -167,48 +169,48 @@ - } - case KEY_SPACE: - { -- MGdbAdd( property->ignoreDb, leafPortDirPtr, "-slid skipped", NULL ); -- fprintf( stdout, " Skipping %s\n\n", leafPortNamePtr ); -+ MGdbAdd( property->ignoreDb, leafPortDir, "-slid skipped", NULL ); -+ fprintf( stdout, " Skipping %s\n\n", leafPortName ); - break; - } - case KEY_n: - { - /* nuke() */ -- fprintf( stdout, " Nuking %s\n\n", leafPortNamePtr ); -- removePort( property, leafPortNamePtr, installedPortsDbIDX ); -- nuke( leafPortDirPtr ); -+ fprintf( stdout, " Nuking %s\n\n", leafPortName ); -+ removePort( property, leafPortName, installedPortsDbIDX ); -+ nuke( leafPortDir ); - rebuildDb( property, &installedPortsDbQTY ); - break; - } - case KEY_N: - { - /* nuke() */ -- fprintf( stdout, " Nuking %s\n\n", leafPortNamePtr ); -- removePort( property, leafPortNamePtr, installedPortsDbIDX ); -- nuke( leafPortDirPtr ); -+ fprintf( stdout, " Nuking %s\n\n", leafPortName ); -+ removePort( property, leafPortName, installedPortsDbIDX ); -+ nuke( leafPortDir ); - rebuildDb( property, &installedPortsDbQTY ); - break; - } - case KEY_x: - { - /* delete() */ -- fprintf( stdout, " Removing %s\n\n", leafPortNamePtr ); -- removePort( property, leafPortNamePtr, installedPortsDbIDX ); -+ fprintf( stdout, " Removing %s\n\n", leafPortName ); -+ removePort( property, leafPortName, installedPortsDbIDX ); - rebuildDb( property, &installedPortsDbQTY ); - break; - } - case KEY_X: - { - /* delete() */ -- fprintf( stdout, " Removing %s\n\n", leafPortNamePtr ); -- removePort( property, leafPortNamePtr, installedPortsDbIDX ); -+ fprintf( stdout, " Removing %s\n\n", leafPortName ); -+ removePort( property, leafPortName, installedPortsDbIDX ); - rebuildDb( property, &installedPortsDbQTY ); - break; - } - default: - { -- MGdbAdd( property->ignoreDb, leafPortDirPtr, "-slid skipped", NULL ); -- fprintf( stdout, "Skipping %s\n\n", leafPortNamePtr ); -+ MGdbAdd( property->ignoreDb, leafPortDir, "-slid skipped", NULL ); -+ fprintf( stdout, "Skipping %s\n\n", leafPortName ); - break; - } - } -@@ -221,6 +223,9 @@ - MGdbDestroy( property->ignoreDb ); - MGdbDestroy( property->installedPortsDb ); - free( command ); -+ free( leafPortDir ); -+ free( leafPortName ); -+ free( pkgDescFile ); - return(0); - } - -@@ -266,7 +271,7 @@ - } - - /***********************************************************************/ --int nuke( char* leafPortDirPtr ) -+int nuke( char* leafPortDir ) - { - char* command = NULL; - -@@ -274,7 +279,7 @@ - - strcpy( command, "cd " ); - strcat( command, PORTSDIR ); -- strcat( command, leafPortDirPtr ); -+ strcat( command, leafPortDir ); - strcat( command, "; make distclean" ); - fprintf( stdout, "\nexecuting: %s\n", command ); - while( fflush( stdout ) ); -diff -ruN ../0.3.3_2/libMGPM/src/MGPMrUpdate.c ./libMGPM/src/MGPMrUpdate.c ---- ../0.3.3_2/libMGPM/src/MGPMrUpdate.c Wed Nov 9 13:24:45 2005 -+++ ./libMGPM/src/MGPMrUpdate.c Wed Nov 9 21:54:00 2005 -@@ -41,10 +41,15 @@ - char* buffer; - char* command; - char* commandRestart; -+ char* installedPortName; - char* newPortDir; - char* newPortName; - char* optionsCheck; - char* optionsDir; -+ char* startPortCmd; -+ char* startPortDir; -+ char* stopPortCmd; -+ char* stopPortDir; - char* workDir; - } structLocalProperty; - -@@ -58,6 +63,8 @@ - char BROKEN[] = "BROKEN"; - char FORBIDDEN[] = "FORBIDDEN"; - char IGNORE[] = "IGNORE"; -+ char START[] = "/START"; -+ char STOP[] = "/STOP"; - char backUp[] = "--back-up"; - char bu[] = "-bu"; - char exact[] = "exact"; -@@ -71,11 +78,12 @@ - char* availableDependenciesDbDependencyDirPtr = NULL; - char* availableDependenciesDbDependencyNamePtr = NULL; - char* bufferBase = NULL; -- char* installedPortsDbPortNamePtr = NULL; - char* ipPtr = NULL; - char* oldPortDirPtr = NULL; - char* options = NULL; - char* stinker = NULL; -+ char* startPortDirPtr = NULL; -+ char* stopPortDirPtr = NULL; - char* strikePtr = NULL; - int availableDependenciesDbIDX = 0; - int availableDependenciesDbQTY = 0; -@@ -99,12 +107,17 @@ - localProperty.buffer = (char*)calloc( bufferSize, 1 ); - localProperty.command = (char*)calloc( bufferSize, 1 ); - localProperty.commandRestart = (char*)calloc( bufferSize, 1 ); -+ localProperty.installedPortName = (char*)calloc( 511, 1 ); - localProperty.newPortDir = (char*)calloc( 511, 1 ); - localProperty.newPortName = (char*)calloc( 511, 1 ); - localProperty.optionsCheck = (char*)calloc( 511, 1 ); - localProperty.optionsDir = (char*)calloc( 511, 1 ); -+ localProperty.startPortCmd = (char*)calloc( 511, 1 ); -+ localProperty.startPortDir = (char*)calloc( 511, 1 ); -+ localProperty.stopPortCmd = (char*)calloc( 511, 1 ); -+ localProperty.stopPortDir = (char*)calloc( 511, 1 ); - localProperty.workDir = (char*)calloc( 511, 1 ); -- -+ - property->availableDependenciesDb = MGdbOpen( property->availableDependenciesDbFileName ); - property->availablePortsDb = MGdbOpen( property->availablePortsDbFileName ); - property->commandLineDb = MGdbOpen( property->commandLineDbFileName ); -@@ -179,6 +192,63 @@ - strcpy( localProperty.beforeOptionsFileSize, MGrIntToString( MGrFileSize( localProperty.optionsDir ) ) ); - - /* -+ * gather stop/start instructions if they exist -+ */ -+ MGdbGoTop( property->configDb ); -+ while( MGdbSeek( property->configDb, -+ property->fieldConfigDbKey, -+ STOP, -+ property->fieldConfigDbKey, -+ exact ) -+ && -+ strncmp( oldPortDir, -+ MGdbGet( property->configDb, -+ MGdbGetRecno( property->configDb ) - 1, -+ property->fieldConfigDbValue ), -+ strlen( oldPortDir ) ) == 0 ) -+ { -+ stopPortDirPtr = MGdbGet( property->configDb, -+ MGdbGetRecno( property->configDb ) - 1, -+ property->fieldConfigDbValue ); -+ if( stopPortDirPtr[strlen( oldPortDir )] == SPACE ) -+ { -+ strncpy( localProperty.stopPortDir, stopPortDirPtr, strlen( oldPortDir ) ); -+ strcpy( localProperty.stopPortCmd, stopPortDirPtr + strlen( oldPortDir ) + 1 ); -+ break; -+ } -+ else -+ { -+ break; -+ } -+ } -+ MGdbGoTop( property->configDb ); -+ while( MGdbSeek( property->configDb, -+ property->fieldConfigDbKey, -+ START, -+ property->fieldConfigDbKey, -+ exact ) -+ && -+ strncmp( oldPortDir, -+ MGdbGet( property->configDb, -+ MGdbGetRecno( property->configDb ) - 1, -+ property->fieldConfigDbValue ), -+ strlen( oldPortDir ) ) == 0 ) -+ { -+ startPortDirPtr = MGdbGet( property->configDb, -+ MGdbGetRecno( property->configDb ) - 1, -+ property->fieldConfigDbValue ); -+ if( startPortDirPtr[strlen( oldPortDir )] == SPACE ) -+ { -+ strncpy( localProperty.startPortDir, startPortDirPtr, strlen( oldPortDir ) ); -+ strcpy( localProperty.startPortCmd, startPortDirPtr + strlen( oldPortDir ) + 1 ); -+ } -+ else -+ { -+ break; -+ } -+ } -+ -+ /* - * Do update in interactive mode (command line switch -ui ) - */ - if( property->interactive ) -@@ -346,6 +416,16 @@ - * options changed so need to purge oldPortDir's records - * from availablePortsDb and availableDependenciesDb - */ -+ if( property->log ) -+ { -+ strcpy( localProperty.command, "echo \" options changed so returning " ); -+ strcat( localProperty.command, oldPortName ); -+ strcat( localProperty.command, " " ); -+ strcat( localProperty.command, oldPortDir ); -+ strcat( localProperty.command, " to out of date pool " ); -+ strcat( localProperty.command, " \">> /var/log/portmanager.log" ); -+ system( localProperty.command ); -+ } - property->optionsChanged = 1; - MGdbGoTop( property->availablePortsDb ); - while( MGdbSeek( property->availablePortsDb, -@@ -519,12 +599,13 @@ - installedPortsDbQTY = MGdbGetRecordQty( property->installedPortsDb ); - while( installedPortsDbIDX < installedPortsDbQTY ) - { -- installedPortsDbPortNamePtr = MGdbGet( property->installedPortsDb, installedPortsDbIDX, -- property->fieldInstalledPortsDbPortName ); -- stinker = strstr( bufferBase, installedPortsDbPortNamePtr ); -+ strcpy( localProperty.installedPortName, MGdbGet( property->installedPortsDb, -+ installedPortsDbIDX, -+ property->fieldInstalledPortsDbPortName ) ); -+ stinker = strstr( bufferBase, localProperty.installedPortName ); - if( stinker ) - { -- fprintf( stdout, "OK to remove conflicting port %s Yy/Nn/Aa [Y]\? ", installedPortsDbPortNamePtr ); -+ fprintf( stdout, "OK to remove conflicting port %s Yy/Nn/Aa [Y]\? ", localProperty.installedPortName ); - while( fflush( stdout ) ); - if( property->autoConflicts == 0 ) - { -@@ -585,7 +666,7 @@ - } - } - strcpy( localProperty.command, "pkg_delete -f " ); -- strcat( localProperty.command, installedPortsDbPortNamePtr ); -+ strcat( localProperty.command, localProperty.installedPortName ); - fprintf( stdout, "executing: %s\n", localProperty.command ); - while( fflush( stdout ) ); - errorCode = system( localProperty.command ); -@@ -918,6 +999,56 @@ - } - else - { -+ /* -+ * use localProperty.stopPortCmd if it is defined -+ */ -+ if( strcmp( oldPortDir, localProperty.stopPortDir ) == 0 ) -+ { -+ fprintf( stdout, "%s %s info: running %s stop command %s\n", -+ id, -+ PACKAGE_VERSION, -+ localProperty.stopPortDir, -+ localProperty.stopPortCmd ); -+ while( fflush( stdout ) ); -+ -+ localProperty.buffer[0] = 0; -+ pHandle = popen( localProperty.stopPortCmd, "r" ); -+ fread( localProperty.buffer, bufferSize, 1, pHandle ); -+ pclose( pHandle ); -+/* -+ idx = 0; -+ while( idx < bufferSize ) -+ { -+ if( localProperty.buffer[idx] == LINEFEED -+ || -+ localProperty.buffer[idx] == TAB -+ || -+ localProperty.buffer[idx] == SPACE ) -+ { -+ localProperty.buffer[idx] = 0; -+ break; -+ } -+ idx++; -+ } -+*/ -+ if( property->log ) -+ { -+ strcpy( localProperty.command, "echo \" stopping " ); -+ strcat( localProperty.command, oldPortName ); -+ strcat( localProperty.command, " " ); -+ strcat( localProperty.command, oldPortDir ); -+ strcat( localProperty.command, " execution by running " ); -+ strcat( localProperty.command, localProperty.stopPortCmd ); -+ strcat( localProperty.command, " \">> /var/log/portmanager.log" ); -+ system( localProperty.command ); -+ } -+ fprintf( stdout, "%s reply: %s\n", localProperty.stopPortCmd, localProperty.buffer ); -+ while( fflush( stdout ) ); -+ } -+ -+ /* -+ * remove old port -+ */ - strcpy( localProperty.command, "pkg_delete -f "); - strcat( localProperty.command, oldPortName); - fprintf( stdout, "%s\n", SINGLE_LINES ); -@@ -1041,6 +1172,54 @@ - system( localProperty.command ); - } - } -+ -+ /* -+ * use localProperty.startPortCmd if it is defined -+ */ -+ if( strcmp( oldPortDir, localProperty.startPortDir ) == 0 ) -+ { -+ fprintf( stdout, "%s %s info: running %s start command %s\n", -+ id, -+ PACKAGE_VERSION, -+ localProperty.startPortDir, -+ localProperty.startPortCmd ); -+ while( fflush( stdout ) ); -+ localProperty.buffer[0] = 0; -+ pHandle = popen( localProperty.startPortCmd, "r" ); -+ fread( localProperty.buffer, bufferSize, 1, pHandle ); -+ pclose( pHandle ); -+/* -+ idx = 0; -+ while( idx < bufferSize ) -+ { -+ if( localProperty.buffer[idx] == LINEFEED -+ || -+ localProperty.buffer[idx] == TAB -+ || -+ localProperty.buffer[idx] == SPACE ) -+ { -+ localProperty.buffer[idx] = 0; -+ break; -+ } -+ idx++; -+ } -+*/ -+ if( property->log ) -+ { -+ strcpy( localProperty.command, "echo \" starting " ); -+ strcat( localProperty.command, oldPortName ); -+ strcat( localProperty.command, " " ); -+ strcat( localProperty.command, oldPortDir ); -+ strcat( localProperty.command, " execution by running " ); -+ strcat( localProperty.command, localProperty.startPortCmd ); -+ strcat( localProperty.command, " \">> /var/log/portmanager.log" ); -+ system( localProperty.command ); -+ } -+ -+ fprintf( stdout, "%s reply: %s\n", localProperty.startPortCmd, localProperty.buffer ); -+ while( fflush( stdout ) ); -+ } -+ - /************************************************************************/ - /* Command "13" make package */ - /************************************************************************/ -@@ -1229,10 +1408,15 @@ - free( localProperty->buffer ); - free( localProperty->command ); - free( localProperty->commandRestart ); -+ free( localProperty->installedPortName ); - free( localProperty->newPortDir ); - free( localProperty->newPortName ); - free( localProperty->optionsCheck ); - free( localProperty->optionsDir ); -+ free( localProperty->startPortCmd ); -+ free( localProperty->startPortDir ); -+ free( localProperty->stopPortCmd ); -+ free( localProperty->stopPortDir ); - free( localProperty->workDir ); - - return(0); -diff -ruN ../0.3.3_2/portmanager/pm-020.conf.SAMPLE ./portmanager/pm-020.conf.SAMPLE ---- ../0.3.3_2/portmanager/pm-020.conf.SAMPLE Tue Nov 8 17:05:25 2005 -+++ ./portmanager/pm-020.conf.SAMPLE Wed Nov 9 14:22:48 2005 -@@ -1,42 +1,40 @@ --#............................................ --# port manager example configuration file ver 0.2.0 --#............................................................ --# the format of portmanager.conf is critical! --# --# 1. Comments delimited with # should be ok --# 2. No leading white space( space or tabs ) --# 3. Placement of "|" is critical here is the format: - # --# [port category dir/port dir] | [ all port build options go here ] | -+# port manager example configuration file ver 0.2.0 - # --# 4. white space between port options is ok, and between final "|" and --# the start of a comment -+ -+CATEGORY/PORT|OPTION=| # do not delete this line! -+ - # --# example: --#............................................................ - # port | options | --#............................................................ --#x11-toolkits/vte|WITH_GLX=yes -DNOCLEAN| # some comment....... --#java/jdk14|-DMINIMAL| # anothe comment.... --#............................................................ --CATEGORY/PORT|OPTION=| # do not delete this line! -+# - --##################### --# custom settings # --# remove "#" to use # --##################### - #textproc/docproj|JADETEX=no| - #java/jdk14|-DMINIMAL| - #textproc/libxml2|THREADS=off SCHEMA=on MEM_DEBUG=off XMLLINT_HIST=off THREAD_ALLOC=off| -+ - # -+# do not let portmanager update the following ports - # --## --##do not let portmanager update the following ports -+ - #IGNORE|editors/openoffice-1.1| - #IGNORE|java/jdk14| - -- -- -+# -+# STOP/START these programs if they are updated -+# -+# Stop command will be run after program is built, before -+# old installed version is removed -+# -+# Start command will be run after rebuilt program is -+# installed and successfully registerd -+# -+# note: -+# must have leading "/" in /{category}/{port dir} -+# anything after /{category}/{port dir} is run as -+# a sh shell command -+# -+#STOP|/mail/postfix /usr/local/sbin/postfix stop| -+#START|/mail/postfix /usr/local/sbin/postfix start| - - - -diff -ruN ../0.3.3_2/portmanager/portmanager.1 ./portmanager/portmanager.1 ---- ../0.3.3_2/portmanager/portmanager.1 Tue Nov 8 17:05:25 2005 -+++ ./portmanager/portmanager.1 Wed Nov 9 18:49:17 2005 -@@ -128,24 +128,6 @@ - .sp - http://portmanager.sunsite.dk/ - .sp -- \fBMail lists\fR --.sp --portmanager-questions@sunsite.dk --.sp --To subscribe send an empty message to: -- portmanager-questions-subscribe@sunsite.dk --.sp -- archive: http://www.mail-archive.com/portmanager-questions%40sunsite.dk/ --.sp --.sp --If you would like to joint portmanager's development team let us know at: --portmanager-devel@sunsite.dk --.sp --To subscribe send an empty message to: -- portmanager-devel-subscribe@sunsite.dk --.sp -- archive: http://www.mail-archive.com/portmanager-devel%40sunsite.dk/ --.sp - .\"======================================================================= - .\".Sh IMPLEMENTATION NOTES - .\"======================================================================= -@@ -166,35 +148,44 @@ - .sp - pm\&-020.conf example: - .sp -- # the format of pm\&-020.conf is critical - # -- # 1. Comments delimited with # should be ok -- # 2. No leading white space( space or tabs ) -- # 3. Placement of \&"\&|\&" is critical here is the format: -- # -- # [port category dir/port dir] \&| [ all port build options go here ] \&| -- # -- # 4. white space between port options is ok, and between final \&"\&|\&" and -- # the start of a comment -- # -- # example: -- #............................................................ -- # port \&| options \&| -- #............................................................ -- #x11\&-toolkits/vte\&|WITH_GLX=yes \&-DNOCLEAN\&| # some comment....... -- #java/jdk14\&|\&-DMINIMAL\&| # another comment.... -- #............................................................ -- CATEGORY/PORT\&|OPTION=\&| # do not delete this line -- # -- devel/sdl12\&|WITH_NAS=yes\&| -- editors/openoffice\&-1.1\&|WITH_TTF_BYTECODE_ENABLED=yes\&| -- java/jdk14\&|WITH_IPV6=yes\&| -- multimedia/avifile\&|WITH_OPTIMIZED_CFLAGS=yes\&| -- local/sysutils/portmanager\&|PREFIX=/home/mike/TEMP\&| -- # -- #do not let portmanager update the following ports -- IGNORE\&|editors/openoffice\&-1.1\&| -- IGNORE\&|java/jdk14\&| -+ # port manager example configuration file ver 0.2.0 -+ # -+.sp -+ CATEGORY/PORT\&|OPTION=\&| # do not delete this line! -+.sp -+ # -+ # port \&| options \&| -+ # -+.sp -+ #textproc/docproj\&|JADETEX=no\&| -+ #java/jdk14\&|-DMINIMAL\&| -+ #textproc/libxml2\&|THREADS=off SCHEMA=on MEM_DEBUG=off THREAD_ALLOC=off\&| -+.sp -+ # -+ # do not let portmanager update the following ports -+ # -+.sp -+ #IGNORE\&|editors/openoffice-1.1\&| -+ #IGNORE\&|java/jdk14\&| -+.sp -+ # -+ # STOP/START these programs if they are updated -+ # -+ # Stop command will be run after program is built, before -+ # old installed version is removed -+ # -+ # Start command will be run after rebuilt program is -+ # installed and successfully registerd -+ # -+ # note: -+ # must have leading \&"/\&" in /{category}/{port dir} -+ # anything after /{category}/{port dir} is run as -+ # a sh shell command -+ # -+ #STOP\&|/mail/postfix /usr/local/sbin/postfix stop\&| -+ #START\&|/mail/postfix /usr/local/sbin/postfix start\&| -+.sp - .\"======================================================================= - .Sh DIAGNOSTICS - Detail of how portmanager works -diff -ruN ../0.3.3_2/programmer-notes.txt ./programmer-notes.txt ---- ../0.3.3_2/programmer-notes.txt Wed Nov 9 13:24:45 2005 -+++ ./programmer-notes.txt Wed Nov 9 22:32:39 2005 -@@ -275,6 +275,15 @@ - A) Creates database of Installed ports, checks/handles installed ports - that are no longerin the ports tree. - -+===================================== -+ -+Bring Joy -+ -+It actually is a good idea, but not so simple to implement. The ports system only -+knows what the current dist file so won't tell you if one is out of date, have to -+do some extra digging for that. Still an option to clean old distfiles and old -+packages as you go would be really nice so I will add your iidea to the long term -+goals list. - - ************** JAVA notes ******************* - --- portmanager-0.3.4.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted: