1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-03 01:23:49 +00:00

Remove the no-longer supported gpdf. It has been replaced by evince.

This commit is contained in:
Joe Marcus Clarke 2007-06-19 04:23:41 +00:00
parent 7d194c237e
commit 5a360e9e57
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=193838
12 changed files with 0 additions and 594 deletions

View File

@ -220,7 +220,6 @@
SUBDIR += goom
SUBDIR += gozer
SUBDIR += gpaint
SUBDIR += gpdf
SUBDIR += gphoto2
SUBDIR += gplot
SUBDIR += gpsmanshp

View File

@ -1,35 +0,0 @@
# New ports collection makefile for: gpdf
# Date created: 12 April 2002
# Whom: Adam Weinberger <adamw@FreeBSD.org>
#
# $FreeBSD$
#
PORTNAME= gpdf
PORTVERSION= 2.10.0
PORTREVISION= 6
CATEGORIES= graphics print gnome
MASTER_SITES= ${MASTER_SITE_GNOME}
MASTER_SITE_SUBDIR= sources/${PORTNAME}/2.10
DIST_SUBDIR= gnome2
MAINTAINER= gnome@FreeBSD.org
COMMENT= GNOME version of xpdf
USE_BZIP2= yes
USE_GMAKE= yes
USE_GNOME= gnomeprefix gnomehack intlhack libgnomeui libgnomeprintui \
desktopfileutils
USE_GETTEXT= yes
USE_X_PREFIX= yes
INSTALLS_OMF= yes
GNU_CONFIGURE= yes
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
LDFLAGS="-L${LOCALBASE}/lib"
GCONF_SCHEMAS= gpdf.schemas
post-install:
@-update-desktop-database
.include <bsd.port.mk>

View File

@ -1,3 +0,0 @@
MD5 (gnome2/gpdf-2.10.0.tar.bz2) = 9278cd3b9d06e3b1d364452f0e512fa9
SHA256 (gnome2/gpdf-2.10.0.tar.bz2) = b6a5abf78363205e01bf1d238eaf4c349c9725f57aa18e2adc0445268540c7e6
SIZE (gnome2/gpdf-2.10.0.tar.bz2) = 1079944

View File

@ -1,296 +0,0 @@
Index: xpdf/JPXStream.cc
===================================================================
--- xpdf/JPXStream.cc
+++ xpdf/JPXStream.cc
@@ -7,6 +7,7 @@
//========================================================================
#include <aconf.h>
+#include <limits.h>
#ifdef USE_GCC_PRAGMAS
#pragma implementation
@@ -666,7 +667,7 @@ GBool JPXStream::readCodestream(Guint le
int segType;
GBool haveSIZ, haveCOD, haveQCD, haveSOT;
Guint precinctSize, style;
- Guint segLen, capabilities, comp, i, j, r;
+ Guint segLen, capabilities, nTiles, comp, i, j, r;
//----- main header
haveSIZ = haveCOD = haveQCD = haveSOT = gFalse;
@@ -701,8 +702,19 @@ GBool JPXStream::readCodestream(Guint le
/ img.xTileSize;
img.nYTiles = (img.ySize - img.yTileOffset + img.yTileSize - 1)
/ img.yTileSize;
- img.tiles = (JPXTile *)gmalloc(img.nXTiles * img.nYTiles *
- sizeof(JPXTile));
+ // check for overflow before allocating memory
+ if (img.nXTiles <= 0 || img.nYTiles <= 0 ||
+ img.nXTiles >= INT_MAX/img.nYTiles) {
+ error(getPos(), "Bad tile count in JPX SIZ marker segment");
+ return gFalse;
+ }
+ nTiles = img.nXTiles * img.nYTiles;
+ if (nTiles >= INT_MAX/sizeof(JPXTile)) {
+ error(getPos(), "Bad tile count in JPX SIZ marker segment");
+ return gFalse;
+ }
+ img.tiles = (JPXTile *)gmalloc(nTiles * sizeof(JPXTile));
+
for (i = 0; i < img.nXTiles * img.nYTiles; ++i) {
img.tiles[i].tileComps = (JPXTileComp *)gmalloc(img.nComps *
sizeof(JPXTileComp));
Index: xpdf/Stream.h
===================================================================
--- xpdf/Stream.h
+++ xpdf/Stream.h
@@ -233,6 +233,8 @@ public:
~StreamPredictor();
+ GBool isOk() { return ok; }
+
int lookChar();
int getChar();
@@ -250,6 +252,7 @@ private:
int rowBytes; // bytes per line
Guchar *predLine; // line buffer
int predIdx; // current index in predLine
+ GBool ok;
};
//------------------------------------------------------------------------
Index: xpdf/Stream.cc
===================================================================
--- xpdf/Stream.cc
+++ xpdf/Stream.cc
@@ -15,6 +15,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
+#include <limits.h>
#ifndef WIN32
#include <unistd.h>
#endif
@@ -412,13 +413,28 @@ StreamPredictor::StreamPredictor(Stream
width = widthA;
nComps = nCompsA;
nBits = nBitsA;
+ predLine = NULL;
+ ok = gFalse;
+ if (width <= 0 || nComps <= 0 || nBits <= 0 ||
+ nComps >= INT_MAX/nBits ||
+ width >= INT_MAX/nComps/nBits) {
+ return;
+ }
nVals = width * nComps;
+ if (nVals * nBits + 7 <= 0) {
+ return;
+ }
pixBytes = (nComps * nBits + 7) >> 3;
rowBytes = ((nVals * nBits + 7) >> 3) + pixBytes;
+ if (rowBytes < 0) {
+ return;
+ }
predLine = (Guchar *)gmalloc(rowBytes);
memset(predLine, 0, rowBytes);
predIdx = rowBytes;
+
+ ok = gTrue;
}
StreamPredictor::~StreamPredictor() {
@@ -1012,6 +1028,10 @@ LZWStream::LZWStream(Stream *strA, int p
FilterStream(strA) {
if (predictor != 1) {
pred = new StreamPredictor(this, predictor, columns, colors, bits);
+ if (!pred->isOk()) {
+ delete pred;
+ pred = NULL;
+ }
} else {
pred = NULL;
}
@@ -1260,6 +1280,10 @@ CCITTFaxStream::CCITTFaxStream(Stream *s
endOfLine = endOfLineA;
byteAlign = byteAlignA;
columns = columnsA;
+ if (columns < 1 || columns >= INT_MAX / sizeof(short)) {
+ error(-1, "invalid number of columns: %d", columns);
+ exit(1);
+ }
rows = rowsA;
endOfBlock = endOfBlockA;
black = blackA;
@@ -2897,6 +2921,11 @@ GBool DCTStream::readBaselineSOF() {
height = read16();
width = read16();
numComps = str->getChar();
+ if (numComps <= 0 || numComps > 4) {
+ numComps = 0;
+ error(getPos(), "Bad number of components in DCT stream");
+ return gFalse;
+ }
if (prec != 8) {
error(getPos(), "Bad DCT precision %d", prec);
return gFalse;
@@ -2923,6 +2952,11 @@ GBool DCTStream::readProgressiveSOF() {
height = read16();
width = read16();
numComps = str->getChar();
+ if (numComps <= 0 || numComps > 4) {
+ numComps = 0;
+ error(getPos(), "Bad number of components in DCT stream");
+ return gFalse;
+ }
if (prec != 8) {
error(getPos(), "Bad DCT precision %d", prec);
return gFalse;
@@ -2945,6 +2979,11 @@ GBool DCTStream::readScanInfo() {
length = read16() - 2;
scanInfo.numComps = str->getChar();
+ if (scanInfo.numComps <= 0 || scanInfo.numComps > 4) {
+ scanInfo.numComps = 0;
+ error(getPos(), "Bad number of components in DCT stream");
+ return gFalse;
+ }
--length;
if (length != 2 * scanInfo.numComps + 3) {
error(getPos(), "Bad DCT scan info block");
@@ -3019,12 +3058,12 @@ GBool DCTStream::readHuffmanTables() {
while (length > 0) {
index = str->getChar();
--length;
- if ((index & 0x0f) >= 4) {
+ if ((index & ~0x10) >= 4 || (index & ~0x10) < 0) {
error(getPos(), "Bad DCT Huffman table");
return gFalse;
}
if (index & 0x10) {
- index &= 0x0f;
+ index &= 0x03;
if (index >= numACHuffTables)
numACHuffTables = index+1;
tbl = &acHuffTables[index];
@@ -3142,9 +3181,11 @@ int DCTStream::readMarker() {
do {
do {
c = str->getChar();
+ if(c == EOF) return EOF;
} while (c != 0xff);
do {
c = str->getChar();
+ if(c == EOF) return EOF;
} while (c == 0xff);
} while (c == 0x00);
return c;
@@ -3255,6 +3296,10 @@ FlateStream::FlateStream(Stream *strA, i
FilterStream(strA) {
if (predictor != 1) {
pred = new StreamPredictor(this, predictor, columns, colors, bits);
+ if (!pred->isOk()) {
+ delete pred;
+ pred = NULL;
+ }
} else {
pred = NULL;
}
Index: xpdf/JBIG2Stream.cc
===================================================================
--- xpdf/JBIG2Stream.cc
+++ xpdf/JBIG2Stream.cc
@@ -7,6 +7,7 @@
//========================================================================
#include <aconf.h>
+#include <limits.h>
#ifdef USE_GCC_PRAGMAS
#pragma implementation
@@ -681,7 +682,16 @@ JBIG2Bitmap::JBIG2Bitmap(Guint segNumA,
w = wA;
h = hA;
line = (wA + 7) >> 3;
- data = (Guchar *)gmalloc(h * line);
+
+ if (h < 0 || line <= 0 || h >= (INT_MAX - 1) / line) {
+ error(-1, "invalid width/height");
+ data = NULL;
+ return;
+ }
+
+ // need to allocate one extra guard byte for use in combine()
+ data = (Guchar *)gmalloc(h * line + 1);
+ data[h * line] = 0;
}
JBIG2Bitmap::JBIG2Bitmap(Guint segNumA, JBIG2Bitmap *bitmap):
@@ -690,8 +700,17 @@ JBIG2Bitmap::JBIG2Bitmap(Guint segNumA,
w = bitmap->w;
h = bitmap->h;
line = bitmap->line;
- data = (Guchar *)gmalloc(h * line);
+
+ if (h < 0 || line <= 0 || h >= (INT_MAX - 1) / line) {
+ error(-1, "invalid width/height");
+ data = NULL;
+ return;
+ }
+
+ // need to allocate one extra guard byte for use in combine()
+ data = (Guchar *)gmalloc(h * line + 1);
memcpy(data, bitmap->data, h * line);
+ data[h * line] = 0;
}
JBIG2Bitmap::~JBIG2Bitmap() {
@@ -716,10 +735,14 @@ JBIG2Bitmap *JBIG2Bitmap::getSlice(Guint
}
void JBIG2Bitmap::expand(int newH, Guint pixel) {
- if (newH <= h) {
+ if (newH <= h || line <= 0 || newH >= (INT_MAX - 1) / line) {
+ error(-1, "invalid width/height");
+ gfree(data);
+ data = NULL;
return;
}
- data = (Guchar *)grealloc(data, newH * line);
+ // need to allocate one extra guard byte for use in combine()
+ data = (Guchar *)grealloc(data, newH * line + 1);
if (pixel) {
memset(data + h * line, 0xff, (newH - h) * line);
} else {
@@ -2256,6 +2279,15 @@ void JBIG2Stream::readHalftoneRegionSeg(
error(getPos(), "Bad symbol dictionary reference in JBIG2 halftone segment");
return;
}
+ if (gridH == 0 || gridW >= INT_MAX / gridH) {
+ error(getPos(), "Bad size in JBIG2 halftone segment");
+ return;
+ }
+ if (w == 0 || h >= INT_MAX / w) {
+ error(getPos(), "Bad size in JBIG2 bitmap segment");
+ return;
+ }
+
patternDict = (JBIG2PatternDict *)seg;
bpp = 0;
i = 1;
@@ -2887,6 +2919,11 @@ JBIG2Bitmap *JBIG2Stream::readGenericRef
JBIG2BitmapPtr tpgrCXPtr0, tpgrCXPtr1, tpgrCXPtr2;
int x, y, pix;
+ if (w < 0 || h <= 0 || w >= INT_MAX / h) {
+ error(-1, "invalid width/height");
+ return NULL;
+ }
+
bitmap = new JBIG2Bitmap(0, w, h);
bitmap->clearToZero();
# vim: syntax=diff

View File

@ -1,52 +0,0 @@
diff --exclude-from=/home/dang/.diffrc -u -ruN splash/SplashXPathScanner.cc splash/SplashXPathScanner.cc
--- splash/SplashXPathScanner.cc 2004-05-17 14:10:56.000000000 -0400
+++ splash/SplashXPathScanner.cc 2006-02-12 14:35:09.000000000 -0500
@@ -182,7 +182,7 @@
}
void SplashXPathScanner::computeIntersections(int y) {
- SplashCoord ySegMin, ySegMax, xx0, xx1;
+ SplashCoord xSegMin, xSegMax, ySegMin, ySegMax, xx0, xx1;
SplashXPathSeg *seg;
int i, j;
@@ -232,19 +232,27 @@
} else if (seg->flags & splashXPathVert) {
xx0 = xx1 = seg->x0;
} else {
- if (ySegMin <= y) {
- // intersection with top edge
- xx0 = seg->x0 + (y - seg->y0) * seg->dxdy;
- } else {
- // x coord of segment endpoint with min y coord
- xx0 = (seg->flags & splashXPathFlip) ? seg->x1 : seg->x0;
+ if (seg->x0 < seg->x1) {
+ xSegMin = seg->x0;
+ xSegMax = seg->x1;
+ } else {
+ xSegMin = seg->x1;
+ xSegMax = seg->x0;
+ }
+ // intersection with top edge
+ xx0 = seg->x0 + ((SplashCoord)y - seg->y0) * seg->dxdy;
+ // intersection with bottom edge
+ xx1 = seg->x0 + ((SplashCoord)y + 1 - seg->y0) * seg->dxdy;
+ // the segment may not actually extend to the top and/or bottom edges
+ if (xx0 < xSegMin) {
+ xx0 = xSegMin;
+ } else if (xx0 > xSegMax) {
+ xx0 = xSegMax;
}
- if (ySegMax >= y + 1) {
- // intersection with bottom edge
- xx1 = seg->x0 + (y + 1 - seg->y0) * seg->dxdy;
- } else {
- // x coord of segment endpoint with max y coord
- xx1 = (seg->flags & splashXPathFlip) ? seg->x0 : seg->x1;
+ if (xx1 < xSegMin) {
+ xx1 = xSegMin;
+ } else if (xx1 > xSegMax) {
+ xx1 = xSegMax;
}
}
if (xx0 < xx1) {

View File

@ -1,29 +0,0 @@
--- xpdf/TextOutputDev.h.orig Sun Dec 17 00:26:20 2006
+++ xpdf/TextOutputDev.h Sun Dec 17 00:27:45 2006
@@ -26,6 +26,15 @@
class GfxState;
class UnicodeMap;
+class TextWord;
+class TextPool;
+class TextLine;
+class TextLineFrag;
+class TextBlock;
+class TextFlow;
+class TextWordList;
+class TextPage;
+
//------------------------------------------------------------------------
typedef void (*TextOutputFunc)(void *stream, char *text, int len);
@@ -553,6 +562,10 @@
// order (if both flags are false).
TextWordList *makeWordList();
#endif
+
+ // Returns the TextPage object for the last rasterized page,
+ // transferring ownership to the caller.
+ TextPage *takeText();
private:

View File

@ -1,30 +0,0 @@
--- fofi/FoFiTrueType.cc.orig Thu Jan 22 02:26:44 2004
+++ fofi/FoFiTrueType.cc Thu Aug 11 16:55:52 2005
@@ -1343,6 +1343,27 @@
return;
}
+ // make sure the loca table is sane (correct length and entries are
+ // in bounds)
+ i = seekTable("loca");
+ if (tables[i].len < (nGlyphs + 1) * (locaFmt ? 4 : 2)) {
+ parsedOk = gFalse;
+ return;
+ }
+ for (j = 0; j <= nGlyphs; ++j) {
+ if (locaFmt) {
+ pos = (int)getU32BE(tables[i].offset + j*4, &parsedOk);
+ } else {
+ pos = getU16BE(tables[i].offset + j*2, &parsedOk);
+ }
+ if (pos < 0 || pos > len) {
+ parsedOk = gFalse;
+ }
+ }
+ if (!parsedOk) {
+ return;
+ }
+
// read the post table
readPostTable();
if (!parsedOk) {

View File

@ -1,11 +0,0 @@
--- xpdf/gpdf-link-canvas-item.cc.orig Fri May 23 23:04:01 2003
+++ xpdf/gpdf-link-canvas-item.cc Sat May 24 00:15:18 2003
@@ -33,6 +33,8 @@
BEGIN_EXTERN_C
+#define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__)
+
struct _GPdfLinkCanvasItemPrivate {
Link *link;
};

View File

@ -1,11 +0,0 @@
--- xpdf/gpdf-links-canvas-layer.cc.orig Sat May 24 00:17:29 2003
+++ xpdf/gpdf-links-canvas-layer.cc Sat May 24 00:17:46 2003
@@ -42,6 +42,8 @@
BEGIN_EXTERN_C
+#define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__)
+
struct _GPdfLinksCanvasLayerPrivate {
Links *links;
};

View File

@ -1,10 +0,0 @@
--- xpdf/gpdf-thumbnails-view.cc.orig Wed Jan 14 00:09:05 2004
+++ xpdf/gpdf-thumbnails-view.cc Wed Jan 14 00:09:34 2004
@@ -21,6 +21,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*/
+#include <sys/types.h>
#include <gpdf-g-switch.h>
# include <glib.h>
# include <glib/ghash.h>

View File

@ -1,6 +0,0 @@
The GNOME PDF Viewer is an open source viewer for Portable Document
Format (PDF) files, often called "Acrobat" files, from the name of
Adobe's PDF software. The GNOME PDF viewer is based upon xpdf, and
integrates directly into the GNOME 2 desktop.
WWW: http://www.gnome.org

View File

@ -1,110 +0,0 @@
bin/gpdf
libdata/bonobo/servers/GNOME_PDF.server
libexec/gnome-pdf-viewer
share/gnome/application-registry/gpdf.applications
share/gnome/applications/gpdf.desktop
@exec %%LOCALBASE%%/bin/update-desktop-database > /dev/null || /usr/bin/true
share/gnome/gnome-2.0/ui/gpdf-control-ui.xml
share/gnome/gnome-2.0/ui/gpdf-window-ui.xml
share/gnome/gpdf/glade/gpdf-print-progress-dialog.glade
share/gnome/gpdf/glade/gpdf-properties-dialog.glade
share/gnome/help/gpdf/C/figures/gpdf_start_window.png
share/gnome/help/gpdf/C/figures/gpdf_window.png
share/gnome/help/gpdf/C/gpdf.xml
share/gnome/help/gpdf/C/legal.xml
share/gnome/help/gpdf/de/figures/gpdf_window.png
share/gnome/help/gpdf/de/gpdf.xml
share/gnome/help/gpdf/de/legal.xml
share/gnome/help/gpdf/es/figures/gpdf_start_window.png
share/gnome/help/gpdf/es/gpdf.xml
share/gnome/help/gpdf/es/legal.xml
share/gnome/mime-info/gpdf.keys
share/gnome/omf/gpdf/gpdf-C.omf
share/gnome/omf/gpdf/gpdf-de.omf
share/gnome/omf/gpdf/gpdf-es.omf
share/gnome/pixmaps/gnome-pdf.png
share/gnome/pixmaps/gpdf/fitwidth.png
share/gnome/pixmaps/gpdf/stock_book-closed-mark.png
share/gnome/pixmaps/gpdf/stock_book-closed.png
share/gnome/pixmaps/gpdf/stock_book-opened-mark.png
share/gnome/pixmaps/gpdf/stock_book-opened.png
share/gnome/pixmaps/gpdf/stock_bookmarks.png
share/locale/af/LC_MESSAGES/gpdf.mo
share/locale/am/LC_MESSAGES/gpdf.mo
share/locale/ar/LC_MESSAGES/gpdf.mo
share/locale/az/LC_MESSAGES/gpdf.mo
share/locale/be/LC_MESSAGES/gpdf.mo
share/locale/bn/LC_MESSAGES/gpdf.mo
share/locale/bs/LC_MESSAGES/gpdf.mo
share/locale/ca/LC_MESSAGES/gpdf.mo
share/locale/cs/LC_MESSAGES/gpdf.mo
share/locale/cy/LC_MESSAGES/gpdf.mo
share/locale/da/LC_MESSAGES/gpdf.mo
share/locale/de/LC_MESSAGES/gpdf.mo
share/locale/el/LC_MESSAGES/gpdf.mo
share/locale/en_CA/LC_MESSAGES/gpdf.mo
share/locale/en_GB/LC_MESSAGES/gpdf.mo
share/locale/eo/LC_MESSAGES/gpdf.mo
share/locale/es/LC_MESSAGES/gpdf.mo
share/locale/et/LC_MESSAGES/gpdf.mo
share/locale/eu/LC_MESSAGES/gpdf.mo
share/locale/fa/LC_MESSAGES/gpdf.mo
share/locale/fi/LC_MESSAGES/gpdf.mo
share/locale/fr/LC_MESSAGES/gpdf.mo
share/locale/ga/LC_MESSAGES/gpdf.mo
share/locale/gl/LC_MESSAGES/gpdf.mo
share/locale/gu/LC_MESSAGES/gpdf.mo
share/locale/he/LC_MESSAGES/gpdf.mo
share/locale/hi/LC_MESSAGES/gpdf.mo
share/locale/hr/LC_MESSAGES/gpdf.mo
share/locale/hu/LC_MESSAGES/gpdf.mo
share/locale/id/LC_MESSAGES/gpdf.mo
share/locale/is/LC_MESSAGES/gpdf.mo
share/locale/it/LC_MESSAGES/gpdf.mo
share/locale/ja/LC_MESSAGES/gpdf.mo
share/locale/kn/LC_MESSAGES/gpdf.mo
share/locale/ko/LC_MESSAGES/gpdf.mo
share/locale/lt/LC_MESSAGES/gpdf.mo
share/locale/lv/LC_MESSAGES/gpdf.mo
share/locale/mk/LC_MESSAGES/gpdf.mo
share/locale/ml/LC_MESSAGES/gpdf.mo
share/locale/mn/LC_MESSAGES/gpdf.mo
share/locale/ms/LC_MESSAGES/gpdf.mo
share/locale/nb/LC_MESSAGES/gpdf.mo
share/locale/ne/LC_MESSAGES/gpdf.mo
share/locale/nl/LC_MESSAGES/gpdf.mo
share/locale/nn/LC_MESSAGES/gpdf.mo
share/locale/no/LC_MESSAGES/gpdf.mo
share/locale/or/LC_MESSAGES/gpdf.mo
share/locale/pa/LC_MESSAGES/gpdf.mo
share/locale/pl/LC_MESSAGES/gpdf.mo
share/locale/pt/LC_MESSAGES/gpdf.mo
share/locale/pt_BR/LC_MESSAGES/gpdf.mo
share/locale/ro/LC_MESSAGES/gpdf.mo
share/locale/ru/LC_MESSAGES/gpdf.mo
share/locale/sk/LC_MESSAGES/gpdf.mo
share/locale/sl/LC_MESSAGES/gpdf.mo
share/locale/sq/LC_MESSAGES/gpdf.mo
share/locale/sr/LC_MESSAGES/gpdf.mo
share/locale/sr@Latn/LC_MESSAGES/gpdf.mo
share/locale/sv/LC_MESSAGES/gpdf.mo
share/locale/ta/LC_MESSAGES/gpdf.mo
share/locale/th/LC_MESSAGES/gpdf.mo
share/locale/tr/LC_MESSAGES/gpdf.mo
share/locale/uk/LC_MESSAGES/gpdf.mo
share/locale/vi/LC_MESSAGES/gpdf.mo
share/locale/wa/LC_MESSAGES/gpdf.mo
share/locale/zh_CN/LC_MESSAGES/gpdf.mo
share/locale/zh_TW/LC_MESSAGES/gpdf.mo
@dirrm share/gnome/pixmaps/gpdf
@dirrm share/gnome/omf/gpdf
@dirrm share/gnome/help/gpdf/es/figures
@dirrm share/gnome/help/gpdf/es
@dirrm share/gnome/help/gpdf/de/figures
@dirrm share/gnome/help/gpdf/de
@dirrm share/gnome/help/gpdf/C/figures
@dirrm share/gnome/help/gpdf/C
@dirrm share/gnome/help/gpdf
@dirrm share/gnome/gpdf/glade
@dirrm share/gnome/gpdf
@unexec %%LOCALBASE%%/bin/update-desktop-database > /dev/null || /usr/bin/true