ports/56152: New port: sysutils/filelight

Markus Brueffer brueffer at phoenix-systems.de
Fri Aug 29 19:30:26 UTC 2003


>Number:         56152
>Category:       ports
>Synopsis:       New port: sysutils/filelight
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Aug 29 12:30:22 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Markus Brueffer
>Release:        FreeBSD 4.9-PRERELEASE i386
>Organization:
>Environment:
System: FreeBSD sethos.phoenix 4.9-PRERELEASE FreeBSD 4.9-PRERELEASE #10: Thu Aug 28 02:05:51 CEST 2003 brueffer at sethos.phoenix:/usr/obj/usr/src/sys/SETHOS i386

>Description:
	New port: sysutils/filelight

	Filelight graphically represents a file system as a set of
	concentric segmented-rings, indicating where diskspace is
	being used. Segments expanding from the center represent
	files (including directories), with each segment's size
	being proportional to the file's size and directories
	having child segments.

>How-To-Repeat:
>Fix:

--- filelight.diff begins here ---
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	filelight
#	filelight/files
#	filelight/files/mntent.h
#	filelight/files/patch-filetree.cpp
#	filelight/files/patch-filelight::Makefile.in
#	filelight/files/mntent_compat.cpp
#	filelight/Makefile
#	filelight/distinfo
#	filelight/pkg-descr
#	filelight/pkg-plist
#
echo c - filelight
mkdir -p filelight > /dev/null 2>&1
echo c - filelight/files
mkdir -p filelight/files > /dev/null 2>&1
echo x - filelight/files/mntent.h
sed 's/^X//' >filelight/files/mntent.h << 'END-of-filelight/files/mntent.h'
X/* -*-C++-*-
X
X  mntent.h
X
X  Copyright (C) 2002 Alan Eldridge
X  
X  This program is free software; you can redistribute it and/or modify
X  it under the terms of the GNU General Public License as published by
X  the Free Software Foundation; either version 2, or (at your option)
X  any later version.
X  
X  This program is distributed in the hope that it will be useful,
X  but WITHOUT ANY WARRANTY; without even the implied warranty of
X  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
X  GNU General Public License for more details.
X  
X  You should have received a copy of the GNU General Public License
X  along with this program; if not, write to the Free Software Foundation,
X  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
X
X  $Id$
X
X  2002/09/08 alane at geeksrus.net
X*/
X
X#ifdef HAVE_MNTENT_H
X#include <mntent.h>
X#else
X
X#ifndef mntent_h_
X#define mntent_h_
X
X#include <stdio.h>
X#include <stdlib.h>
X#include <string.h>
X#include <sys/param.h>
X#include <sys/ucred.h>
X#include <sys/mount.h>
X
X#define	MOUNTED	"dummy"
X#define MNTTYPE_NFS "nfs"
X
Xconst int MOPTSLEN (256 - (MNAMELEN * 2 + MFSNAMELEN + 2 * sizeof(int)));
X
Xstruct mntent {
Xpublic:  
X  char	mnt_fsname[ MNAMELEN ];
X  char	mnt_dir[ MNAMELEN ];
X  char	mnt_type[ MFSNAMELEN ];
X  char	mnt_opts[ MOPTSLEN ];
X  int	mnt_freq, mnt_passno;
Xprivate:
X  void clear();
Xpublic:
X  mntent() {
X    clear();
X  }
X  struct mntent *from_statfs(struct statfs *pst);
X};
X
XFILE *setmntent(const char *szfn, char *szrw);
Xstruct mntent *getmntent(FILE *pf);
Xchar *hasmntopt(const struct mntent *pmnt, const char *szopt);
Xint endmntent(FILE *pf);
X
X#endif /* mntent_h_ */
X#endif /* not HAVE_MNTENT_H */
END-of-filelight/files/mntent.h
echo x - filelight/files/patch-filetree.cpp
sed 's/^X//' >filelight/files/patch-filetree.cpp << 'END-of-filelight/files/patch-filetree.cpp'
X--- filelight/filetree.cpp.orig	Fri Aug 29 18:06:32 2003
X+++ filelight/filetree.cpp	Fri Aug 29 18:19:06 2003
X@@ -77,7 +77,7 @@
X }
X 
X 
X-static int selector( struct dirent64 const *ent )
X+static int selector( struct dirent *ent )
X {
X   if( (strcmp( ent->d_name, "." ) == 0) || (strcmp( ent->d_name, ".." ) == 0) )
X     return 0;
X@@ -93,16 +93,16 @@
X   if( m_haltScan ) return NULL;
X 
X   //the 64bit version lets us support more than 2GB files
X-  struct dirent64 **eps;
X+  struct dirent **eps;
X   int n;
X 
X  
X-  n = scandir64( path, &eps, selector, /*alphasort*/ NULL );
X+  n = scandir( path, &eps, selector, /*alphasort*/ NULL );
X 
X   if( n >= 0 ) {
X 
X     char *new_path, *new_dirname;
X-    struct stat64 statbuf;
X+    struct stat statbuf;
X     unsigned char strlen_path = strlen( path ) + 2; //saves recalculations
X     Directory            *cwd = new Directory( dirname );
X     Filesize          dirsize = 0;
X@@ -121,7 +121,7 @@
X */
X       
X       //get some more detail about the file with lstat            
X-      lstat64( new_path, &statbuf );
X+      lstat( new_path, &statbuf );
X       statbuf.st_size /= 1024; //using units of kB as 32bit max is 4GB and 64bit ints are expensive
X 
X       if( S_ISLNK( statbuf.st_mode ) )
X@@ -260,8 +260,9 @@
X 
X #include <fstab.h>
X #include <mntent.h>
X+#ifndef __FreeBSD__
X #include <sys/statfs.h>
X-
X+#endif
X 
X #define INFO_PARTITIONS "/proc/partitions"
X #define INFO_MOUNTED_PARTITIONS "/etc/mtab"	/* on Linux... */
END-of-filelight/files/patch-filetree.cpp
echo x - filelight/files/patch-filelight::Makefile.in
sed 's/^X//' >filelight/files/patch-filelight::Makefile.in << 'END-of-filelight/files/patch-filelight::Makefile.in'
X--- filelight/Makefile.in.orig	Fri Aug 29 17:42:18 2003
X+++ filelight/Makefile.in	Fri Aug 29 20:42:07 2003
X@@ -239,12 +239,12 @@
X ####### kdevelop will overwrite this part!!! (begin)##########
X bin_PROGRAMS = filelight
X 
X-#>- filelight_SOURCES = settingsdlg.cpp settingsdialog.ui filemap.cpp segmenttip.cpp scanbox.cpp filetree.cpp filelightcanvas.cpp filelight.cpp main.cpp 
X+#>- filelight_SOURCES = settingsdlg.cpp settingsdialog.ui filemap.cpp segmenttip.cpp scanbox.cpp filetree.cpp filelightcanvas.cpp filelight.cpp main.cpp mntent_compat.cpp
X #>+ 1
X-filelight_SOURCES=settingsdlg.cpp  filemap.cpp segmenttip.cpp scanbox.cpp filetree.cpp filelightcanvas.cpp filelight.cpp main.cpp  settingsdialog.cpp
X+filelight_SOURCES=settingsdlg.cpp  filemap.cpp segmenttip.cpp scanbox.cpp filetree.cpp filelightcanvas.cpp filelight.cpp main.cpp mntent_compat.cpp settingsdialog.cpp
X filelight_LDADD = $(LIB_KFILE) $(LIB_KDEUI) $(LIB_KDECORE) $(LIB_QT) $(LIBSOCKET)
X 
X-EXTRA_DIST = main.cpp filelight.cpp filelight.h filelightcanvas.h filelightcanvas.cpp filetree.h filetree.cpp TODO CHANGELOG scanbox.h scanbox.cpp segmenttip.cpp segmenttip.h filemap.cpp filemap.h settingsdialog.ui settingsdlg.cpp settingsdlg.h 
X+EXTRA_DIST = main.cpp filelight.cpp filelight.h filelightcanvas.h filelightcanvas.cpp filetree.h filetree.cpp TODO CHANGELOG scanbox.h scanbox.cpp segmenttip.cpp segmenttip.h filemap.cpp filemap.h settingsdialog.ui settingsdlg.cpp settingsdlg.h mntent_compat.cpp mntent.h
X 
X ####### kdevelop will overwrite this part!!! (end)############
X # These paths are KDE specific. Use them:
X@@ -291,14 +291,16 @@
X 
X am_filelight_OBJECTS = settingsdlg.$(OBJEXT) filemap.$(OBJEXT) \
X 	segmenttip.$(OBJEXT) scanbox.$(OBJEXT) filetree.$(OBJEXT) \
X-	filelightcanvas.$(OBJEXT) filelight.$(OBJEXT) main.$(OBJEXT)
X+	filelightcanvas.$(OBJEXT) filelight.$(OBJEXT) main.$(OBJEXT) \
X+	mntent_compat.$(OBJEXT)
X #>- filelight_OBJECTS = $(am_filelight_OBJECTS)
X-#>+ 7
X+#>+ 8
X filelight_final_OBJECTS = filelight.all_cpp.o 
X filelight_nofinal_OBJECTS = settingsdlg.$(OBJEXT) filemap.$(OBJEXT) \
X 	segmenttip.$(OBJEXT) scanbox.$(OBJEXT) filetree.$(OBJEXT) \
X-	filelightcanvas.$(OBJEXT) filelight.$(OBJEXT) main.$(OBJEXT) settingsdialog.$(OBJEXT)\
X-filelightcanvas.moc.o scanbox.moc.o segmenttip.moc.o filelight.moc.o settingsdlg.moc.o 
X+	filelightcanvas.$(OBJEXT) filelight.$(OBJEXT) main.$(OBJEXT) \
X+	mntent_compat.$(OBJEXT) settingsdialog.$(OBJEXT)\
X+filelightcanvas.moc.o settingsdlg.moc.o segmenttip.moc.o filelight.moc.o scanbox.moc.o 
X @KDE_USE_FINAL_FALSE at filelight_OBJECTS = $(filelight_nofinal_OBJECTS)
X @KDE_USE_FINAL_TRUE at filelight_OBJECTS = $(filelight_final_OBJECTS)
X filelight_DEPENDENCIES =
X@@ -309,21 +311,21 @@
X #>- @AMDEP_TRUE at DEP_FILES = ./$(DEPDIR)/filelight.Po \
X #>- @AMDEP_TRUE@	./$(DEPDIR)/filelightcanvas.Po \
X #>- @AMDEP_TRUE@	./$(DEPDIR)/filemap.Po ./$(DEPDIR)/filetree.Po \
X-#>- @AMDEP_TRUE@	./$(DEPDIR)/main.Po ./$(DEPDIR)/scanbox.Po \
X-#>- @AMDEP_TRUE@	./$(DEPDIR)/segmenttip.Po \
X+#>- @AMDEP_TRUE@	./$(DEPDIR)/main.Po ./$(DEPDIR)/mntent_compat.Po \
X+#>- @AMDEP_TRUE@	./$(DEPDIR)/scanbox.Po ./$(DEPDIR)/segmenttip.Po \
X #>- @AMDEP_TRUE@	./$(DEPDIR)/settingsdlg.Po
X #>+ 13
X- at AMDEP_TRUE@@KDE_USE_FINAL_TRUE at DEP_FILES =  $(DEPDIR)/settingsdialog.P $(DEPDIR)/filelightcanvas.moc.P $(DEPDIR)/scanbox.moc.P $(DEPDIR)/segmenttip.moc.P $(DEPDIR)/filelight.moc.P $(DEPDIR)/settingsdlg.moc.P  $(DEPDIR)/filelight.all_cpp.P  ./$(DEPDIR)/filelight.Po \
X+ at AMDEP_TRUE@@KDE_USE_FINAL_TRUE at DEP_FILES =  $(DEPDIR)/settingsdialog.P $(DEPDIR)/filelightcanvas.moc.P $(DEPDIR)/settingsdlg.moc.P $(DEPDIR)/segmenttip.moc.P $(DEPDIR)/filelight.moc.P $(DEPDIR)/scanbox.moc.P  $(DEPDIR)/filelight.all_cpp.P  ./$(DEPDIR)/filelight.Po \
X @AMDEP_TRUE@@KDE_USE_FINAL_TRUE@	@AMDEP_TRUE@	./$(DEPDIR)/filelightcanvas.Po \
X @AMDEP_TRUE@@KDE_USE_FINAL_TRUE@	@AMDEP_TRUE@	./$(DEPDIR)/filemap.Po ./$(DEPDIR)/filetree.Po \
X- at AMDEP_TRUE@@KDE_USE_FINAL_TRUE@	@AMDEP_TRUE@	./$(DEPDIR)/main.Po ./$(DEPDIR)/scanbox.Po \
X- at AMDEP_TRUE@@KDE_USE_FINAL_TRUE@	@AMDEP_TRUE@	./$(DEPDIR)/segmenttip.Po \
X+ at AMDEP_TRUE@@KDE_USE_FINAL_TRUE@	@AMDEP_TRUE@	./$(DEPDIR)/main.Po ./$(DEPDIR)/mntent_compat.Po \
X+ at AMDEP_TRUE@@KDE_USE_FINAL_TRUE@	@AMDEP_TRUE@	./$(DEPDIR)/scanbox.Po ./$(DEPDIR)/segmenttip.Po \
X @AMDEP_TRUE@@KDE_USE_FINAL_TRUE@	@AMDEP_TRUE@	./$(DEPDIR)/settingsdlg.Po
X- at AMDEP_TRUE@@KDE_USE_FINAL_FALSE at DEP_FILES =  $(DEPDIR)/settingsdialog.P $(DEPDIR)/filelightcanvas.moc.P $(DEPDIR)/scanbox.moc.P $(DEPDIR)/segmenttip.moc.P $(DEPDIR)/filelight.moc.P $(DEPDIR)/settingsdlg.moc.P  ./$(DEPDIR)/filelight.Po \
X+ at AMDEP_TRUE@@KDE_USE_FINAL_FALSE at DEP_FILES =  $(DEPDIR)/settingsdialog.P $(DEPDIR)/filelightcanvas.moc.P $(DEPDIR)/settingsdlg.moc.P $(DEPDIR)/segmenttip.moc.P $(DEPDIR)/filelight.moc.P $(DEPDIR)/scanbox.moc.P  ./$(DEPDIR)/filelight.Po \
X @AMDEP_TRUE@@KDE_USE_FINAL_FALSE@	@AMDEP_TRUE@	./$(DEPDIR)/filelightcanvas.Po \
X @AMDEP_TRUE@@KDE_USE_FINAL_FALSE@	@AMDEP_TRUE@	./$(DEPDIR)/filemap.Po ./$(DEPDIR)/filetree.Po \
X- at AMDEP_TRUE@@KDE_USE_FINAL_FALSE@	@AMDEP_TRUE@	./$(DEPDIR)/main.Po ./$(DEPDIR)/scanbox.Po \
X- at AMDEP_TRUE@@KDE_USE_FINAL_FALSE@	@AMDEP_TRUE@	./$(DEPDIR)/segmenttip.Po \
X+ at AMDEP_TRUE@@KDE_USE_FINAL_FALSE@	@AMDEP_TRUE@	./$(DEPDIR)/main.Po ./$(DEPDIR)/mntent_compat.Po \
X+ at AMDEP_TRUE@@KDE_USE_FINAL_FALSE@	@AMDEP_TRUE@	./$(DEPDIR)/scanbox.Po ./$(DEPDIR)/segmenttip.Po \
X @AMDEP_TRUE@@KDE_USE_FINAL_FALSE@	@AMDEP_TRUE@	./$(DEPDIR)/settingsdlg.Po
X 
X #>- CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
X@@ -362,7 +364,7 @@
X #>+ 3
X 	cd $(top_srcdir) && \
X 	  $(AUTOMAKE) --gnu  filelight/Makefile
X-	cd $(top_srcdir) && perl admin/am_edit filelight-0.6.0/filelight/Makefile.in
X+	cd $(top_srcdir) && perl admin/am_edit filelight/Makefile.in
X Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
X 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
X binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
X@@ -409,6 +411,7 @@
X @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/filemap.Po at am__quote@
X @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/filetree.Po at am__quote@
X @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/main.Po at am__quote@
X+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mntent_compat.Po at am__quote@
X @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/scanbox.Po at am__quote@
X @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/segmenttip.Po at am__quote@
X @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/settingsdlg.Po at am__quote@
X@@ -532,7 +535,7 @@
X 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
X #>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
X #>+ 4
X-KDE_DIST=filelight.desktop cr22-app-filelight.png filelight.xcf cr48-app-filelight.png cr64-app-filelight.png 
X+KDE_DIST=cr64-app-filelight.png cr48-app-filelight.png cr22-app-filelight.png filelight.xcf filelight.desktop 
X 
X DISTFILES= $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
X 
X@@ -689,7 +692,6 @@
X # Otherwise a system limit (for SysV at least) may be exceeded.
X .NOEXPORT:
X 
X-
X #>+ 14
X settingsdialog.cpp: $(srcdir)/settingsdialog.ui settingsdialog.h settingsdialog.moc
X 	rm -f settingsdialog.cpp
X@@ -710,8 +712,8 @@
X 	$(MOC) $(srcdir)/filelightcanvas.h -o filelightcanvas.moc.cpp
X 
X #>+ 3
X-scanbox.moc.cpp: $(srcdir)/scanbox.h
X-	$(MOC) $(srcdir)/scanbox.h -o scanbox.moc.cpp
X+settingsdlg.moc.cpp: $(srcdir)/settingsdlg.h
X+	$(MOC) $(srcdir)/settingsdlg.h -o settingsdlg.moc.cpp
X 
X #>+ 3
X segmenttip.moc.cpp: $(srcdir)/segmenttip.h
X@@ -722,12 +724,12 @@
X 	$(MOC) $(srcdir)/filelight.h -o filelight.moc.cpp
X 
X #>+ 3
X-settingsdlg.moc.cpp: $(srcdir)/settingsdlg.h
X-	$(MOC) $(srcdir)/settingsdlg.h -o settingsdlg.moc.cpp
X+scanbox.moc.cpp: $(srcdir)/scanbox.h
X+	$(MOC) $(srcdir)/scanbox.h -o scanbox.moc.cpp
X 
X #>+ 3
X clean-metasources:
X-	-rm -f  filelightcanvas.moc.cpp scanbox.moc.cpp segmenttip.moc.cpp filelight.moc.cpp settingsdlg.moc.cpp
X+	-rm -f  filelightcanvas.moc.cpp settingsdlg.moc.cpp segmenttip.moc.cpp filelight.moc.cpp scanbox.moc.cpp
X 
X #>+ 4
X clean-ui:
X@@ -755,15 +757,15 @@
X force-reedit:
X 		cd $(top_srcdir) && \
X 	  $(AUTOMAKE) --gnu  filelight/Makefile
X-	cd $(top_srcdir) && perl admin/am_edit filelight-0.6.0/filelight/Makefile.in
X+	cd $(top_srcdir) && perl admin/am_edit filelight/Makefile.in
X 
X 
X #>+ 11
X-filelight.all_cpp.cpp: $(srcdir)/Makefile.in $(srcdir)/settingsdlg.cpp $(srcdir)/filemap.cpp $(srcdir)/segmenttip.cpp $(srcdir)/scanbox.cpp $(srcdir)/filetree.cpp $(srcdir)/filelightcanvas.cpp $(srcdir)/filelight.cpp $(srcdir)/main.cpp $(srcdir)/settingsdialog.cpp segmenttip.moc.cpp scanbox.moc.cpp filelightcanvas.moc.cpp filelight.moc.cpp settingsdlg.moc.cpp  settingsdialog.moc
X+filelight.all_cpp.cpp: $(srcdir)/Makefile.in $(srcdir)/settingsdlg.cpp $(srcdir)/filemap.cpp $(srcdir)/segmenttip.cpp $(srcdir)/scanbox.cpp $(srcdir)/filetree.cpp $(srcdir)/filelightcanvas.cpp $(srcdir)/filelight.cpp $(srcdir)/main.cpp $(srcdir)/mntent_compat.cpp $(srcdir)/settingsdialog.cpp filelightcanvas.moc.cpp settingsdlg.moc.cpp segmenttip.moc.cpp filelight.moc.cpp scanbox.moc.cpp  settingsdialog.moc
X 	@echo 'creating filelight.all_cpp.cpp ...'; \
X 	rm -f filelight.all_cpp.files filelight.all_cpp.final; \
X 	echo "#define KDE_USE_FINAL 1" >> filelight.all_cpp.final; \
X-	for file in settingsdlg.cpp filemap.cpp segmenttip.cpp scanbox.cpp filetree.cpp filelightcanvas.cpp filelight.cpp main.cpp settingsdialog.cpp segmenttip.moc.cpp scanbox.moc.cpp filelightcanvas.moc.cpp filelight.moc.cpp settingsdlg.moc.cpp ; do \
X+	for file in settingsdlg.cpp filemap.cpp segmenttip.cpp scanbox.cpp filetree.cpp filelightcanvas.cpp filelight.cpp main.cpp mntent_compat.cpp settingsdialog.cpp filelightcanvas.moc.cpp settingsdlg.moc.cpp segmenttip.moc.cpp filelight.moc.cpp scanbox.moc.cpp ; do \
X 	  echo "#include \"$$file\"" >> filelight.all_cpp.files; \
X 	  test ! -f $(srcdir)/$$file || egrep '^#pragma +implementation' $(srcdir)/$$file >> filelight.all_cpp.final; \
X 	done; \
X@@ -794,12 +796,13 @@
X kde-rpo-clean:
X 	-rm -f *.rpo
X 
X-#>+ 9
X-$(srcdir)/filelight.cpp: settingsdialog.h 
X-$(srcdir)/settingsdlg.cpp: settingsdialog.h 
X+#>+ 10
X $(srcdir)/filetree.cpp: settingsdialog.h 
X-$(srcdir)/filemap.cpp: settingsdialog.h 
X-$(srcdir)/segmenttip.cpp: settingsdialog.h 
X+$(srcdir)/filelight.cpp: settingsdialog.h 
X+$(srcdir)/mntent_compat.cpp: settingsdialog.h 
X $(srcdir)/scanbox.cpp: settingsdialog.h 
X+$(srcdir)/segmenttip.cpp: settingsdialog.h 
X+$(srcdir)/settingsdlg.cpp: settingsdialog.h 
X $(srcdir)/main.cpp: settingsdialog.h 
X+$(srcdir)/filemap.cpp: settingsdialog.h 
X $(srcdir)/filelightcanvas.cpp: settingsdialog.h 
END-of-filelight/files/patch-filelight::Makefile.in
echo x - filelight/files/mntent_compat.cpp
sed 's/^X//' >filelight/files/mntent_compat.cpp << 'END-of-filelight/files/mntent_compat.cpp'
X/* -*-C++-*-
X
X  mntentemu.c++
X
X  Copyright (C) 2002 Alan Eldridge
X  
X  This program is free software; you can redistribute it and/or modify
X  it under the terms of the GNU General Public License as published by
X  the Free Software Foundation; either version 2, or (at your option)
X  any later version.
X  
X  This program is distributed in the hope that it will be useful,
X  but WITHOUT ANY WARRANTY; without even the implied warranty of
X  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
X  GNU General Public License for more details.
X  
X  You should have received a copy of the GNU General Public License
X  along with this program; if not, write to the Free Software Foundation,
X  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
X
X  $Id: mntent_compat.cc,v 1.3 2002/09/08 18:42:20 alane Exp $
X
X  2002/09/08 alane at geeksrus.net
X*/
X
X#ifndef HAVE_MNTENT_H
X
X#include "config.h"
X#include "mntent.h"
X
X#include <string>
X
X// globals (yuck, but easier for debugging)
X
Xmntent	G_mntent;
Xint	G_mntpos;
Xint	G_mntsize;
Xbool	G_mntfOpen = false;
Xstruct statfs *G_pmntstat = 0;
X
X// map option flags to names
X
Xstruct optmap {
X  int fl;
X  std::string st;
X};
X
Xstatic struct optmap omap[] = {
X  { MNT_SYNCHRONOUS,	"sync"		},
X  { MNT_NOEXEC,		"noexec"	},
X  { MNT_NOSUID,		"nosuid"	},
X  { MNT_NODEV,		"nodev"		},
X  { MNT_UNION,		"union"		},
X  { MNT_ASYNC,		"async"		},
X  { MNT_NOATIME,	"noatime"	},
X  { MNT_NOCLUSTERR,	"noclusterr"	},
X  { MNT_NOCLUSTERW,	"noclusterw"	},
X  { MNT_NOSYMFOLLOW,	"nosymfollow"	},
X  { MNT_SUIDDIR,	"suiddir"	},
X  { 0, "noop" }
X};
X
X// zap everything for clarity
X
Xvoid
Xmntent::clear()
X{
X  memset(mnt_fsname, 0, sizeof(mnt_fsname));
X  memset(mnt_dir, 0, sizeof(mnt_dir));
X  memset(mnt_type, 0, sizeof(mnt_type));
X  memset(mnt_opts, 0, sizeof(mnt_opts));
X  mnt_freq = mnt_passno = 0;
X}
X
X// fake it from a statfs struct
X
Xmntent *
Xmntent::from_statfs(struct statfs *pst)
X{
X
X  clear();
X  strcpy(mnt_fsname, pst->f_mntfromname);
X  strcpy(mnt_dir, pst->f_mntonname);
X  strcpy(mnt_type, pst->f_fstypename);
X  mnt_freq = mnt_passno = 0;
X
X  std::string opts;
X  int fl = pst->f_flags;
X
X  opts += (fl & MNT_RDONLY) ? "ro" : "rw";
X  for (optmap *pmp = omap; pmp->fl != 0; pmp++) {
X    if ((fl & pmp->fl) != 0) {
X      opts += (" " + pmp->st);
X    }
X  }
X  strcpy(mnt_opts, opts.c_str());
X
X  return this;
X}
X
X// "rewind" the mtab file 
X
XFILE *
Xsetmntent(const char *, char *)
X{
X  if (!G_mntfOpen) {
X    G_mntfOpen = true;
X  }
X
X  G_mntpos = 0;
X  G_mntsize = getmntinfo(&G_pmntstat, MNT_NOWAIT);
X
X  return reinterpret_cast<FILE *>(1);
X}
X
X// return ptr to opt string if present
X
Xchar *
Xhasmntopt(const mntent *pmnt, const char *szopt)
X{
X  std::string opt(szopt);
X  std::string mntopts(pmnt->mnt_opts);
X
X  std::string::size_type pos = mntopts.find(opt);
X  const char *szret = (pos == std::string::npos) ? "" : pmnt->mnt_opts + pos;
X
X  return const_cast<char *>(szret);
X}
X
X// get next mntent until all gone, then return 0
X
Xstruct mntent *
Xgetmntent(FILE *)
X{
X  if (!G_mntfOpen) {
X    return 0;
X  } else if (G_mntpos < G_mntsize) {
X    return G_mntent.from_statfs(G_pmntstat + G_mntpos++);
X  } else {
X    G_mntfOpen = false;
X    return 0;
X  }
X}
X
X// "close" the mtab file
X
Xint 
Xendmntent(FILE *)
X{
X  G_mntfOpen = false;
X  return 0;
X}
X
X#endif /* ifndef HAVE_MNTENT_H */
END-of-filelight/files/mntent_compat.cpp
echo x - filelight/Makefile
sed 's/^X//' >filelight/Makefile << 'END-of-filelight/Makefile'
X# New ports collection makefile for:	filelight
X# Date created:		Fri Aug 29 21:16:39 CEST 2003
X# Whom:			Markus Brueffer <brueffer at phoenix-systems.de>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	filelight
XPORTVERSION=	0.6.0
XCATEGORIES=	sysutils kde
XMASTER_SITES=	http://www.methylblue.com/filelight/
X
XMAINTAINER=	brueffer at phoenix-systems.de
XCOMMENT=	Represent a file system as a set of concentric segmented-rings
X
XUSE_KDELIBS_VER=3
XGNU_CONFIGURE=	yes
XUSE_GMAKE=	yes
XUSE_REINPLACE=	yes
X
XCONFIGURE_TARGET=       --build=${ARCH}-portbld-freebsd${OSREL}
X
Xpost-patch:
X	@${CP} ${FILESDIR}/mntent* ${WRKSRC}/filelight
X	@${REINPLACE_CMD} -e 's/-O2//g; s/-pedantic //g' \
X		 ${CONFIGURE_WRKSRC}/configure
X
X.include <bsd.port.mk>
END-of-filelight/Makefile
echo x - filelight/distinfo
sed 's/^X//' >filelight/distinfo << 'END-of-filelight/distinfo'
XMD5 (filelight-0.6.0.tar.gz) = 9d3a35ce1125aac971ba61fd5cc7bcd8
END-of-filelight/distinfo
echo x - filelight/pkg-descr
sed 's/^X//' >filelight/pkg-descr << 'END-of-filelight/pkg-descr'
XFilelight graphically represents a file system as a set of
Xconcentric segmented-rings, indicating where diskspace is
Xbeing used. Segments expanding from the center represent
Xfiles (including directories), with each segment's size 
Xbeing proportional to the file's size and directories
Xhaving child segments. 
X
XAuthor: Max Howell <max.howell at methylblue.com>
XWWW: http://www.methylblue.com/filelight
END-of-filelight/pkg-descr
echo x - filelight/pkg-plist
sed 's/^X//' >filelight/pkg-plist << 'END-of-filelight/pkg-plist'
Xbin/filelight
Xshare/applnk/Utilities/filelight.desktop
Xshare/doc/HTML/en/filelight/common
Xshare/doc/HTML/en/filelight/index.cache.bz2
Xshare/doc/HTML/en/filelight/index.docbook
Xshare/icons/crystalsvg/22x22/apps/filelight.png
Xshare/icons/crystalsvg/48x48/apps/filelight.png
Xshare/icons/crystalsvg/64x64/apps/filelight.png
X at unexec rmdir %D/share/icons/crystalsvg/64x64/apps 2>/dev/null || true
X at unexec rmdir %D/share/icons/crystalsvg/64x64 2>/dev/null || true
X at unexec rmdir %D/share/icons/crystalsvg/48x48/apps 2>/dev/null || true
X at unexec rmdir %D/share/icons/crystalsvg/48x48 2>/dev/null || true
X at unexec rmdir %D/share/icons/crystalsvg/22x22/apps 2>/dev/null || true
X at unexec rmdir %D/share/icons/crystalsvg/22x22 2>/dev/null || true
X at unexec rmdir %D/share/icons/crystalsvg 2>/dev/null || true
X at unexec rmdir %D/share/icons 2>/dev/null || true
X at dirrm share/doc/HTML/en/filelight
X at unexec rmdir %D/share/doc/HTML/en 2>/dev/null || true
X at unexec rmdir %D/share/doc/HTML 2>/dev/null || true
X at unexec rmdir %D/share/applnk/Utilities 2>/dev/null || true
X at unexec rmdir %D/share/applnk 2>/dev/null || true
END-of-filelight/pkg-plist
exit
--- filelight.diff ends here ---



>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list