home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Enigma Amiga Life 110
/
EnigmaAmiga110CD.iso
/
indispensabili
/
utility
/
apdf
/
xpdf-0.80
/
xpdf
/
params.cc
< prev
next >
Wrap
C/C++ Source or Header
|
1999-04-27
|
2KB
|
88 lines
//========================================================================
//
// Params.cc
//
// Copyright 1996 Derek B. Noonburg
//
//========================================================================
#include <stdlib.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include "gtypes.h"
#include "gmem.h"
#include "GString.h"
#include "gfile.h"
#include "Params.h"
char **fontPath = NULL;
static int fontPathLen, fontPathSize;
DevFontMapEntry *devFontMap = NULL;
static int devFontMapLen, devFontMapSize;
void initParams(char *configFile) {
GString *fileName;
FILE *f;
char buf[256];
char *p, *q;
// initialize font path and font map
fontPath = (char **)gmalloc((fontPathSize = 8) * sizeof(char *));
fontPath[fontPathLen = 0] = NULL;
devFontMap = (DevFontMapEntry *)gmalloc((devFontMapSize = 8) *
sizeof(DevFontMapEntry));
devFontMap[devFontMapLen = 0].pdfFont = NULL;
// read config file
fileName = appendToPath(getHomeDir(), configFile);
if ((f = fopen(fileName->getCString(), "r"))) {
while (fgets(buf, sizeof(buf)-1, f)) {
buf[sizeof(buf)-1] = '\0';
p = strtok(buf, " \t\n\r");
if (p && !strcmp(p, "fontpath")) {
if (fontPathLen+1 >= fontPathSize)
fontPath = (char **)
grealloc(fontPath, (fontPathSize += 8) * sizeof(char *));
p = strtok(NULL, " \t\n\r");
fontPath[fontPathLen++] = copyString(p);
} else if (p && !strcmp(p, "fontmap")) {
if (devFontMapLen+1 >= devFontMapSize)
devFontMap = (DevFontMapEntry *)
grealloc(devFontMap,
(devFontMapSize += 8) * sizeof(DevFontMapEntry));
p = strtok(NULL, " \t\n\r");
devFontMap[devFontMapLen].pdfFont = copyString(p);
p = strtok(NULL, "\t\n\r");
while (*p == ' ')
++p;
for (q = p + strlen(p) - 1; q >= p && *q == ' '; --q) ;
q[1] = '\0';
devFontMap[devFontMapLen++].devFont = copyString(p);
}
}
fclose(f);
fontPath[fontPathLen] = NULL;
devFontMap[devFontMapLen].pdfFont = NULL;
}
delete fileName;
}
void freeParams() {
int i;
if (fontPath) {
for (i = 0; i < fontPathLen; ++i)
gfree(fontPath[i]);
gfree(fontPath);
}
if (devFontMap) {
for (i = 0; i < devFontMapLen; ++i) {
gfree(devFontMap[i].pdfFont);
gfree(devFontMap[i].devFont);
}
gfree(devFontMap);
}
}