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