aboutsummaryrefslogtreecommitdiff
path: root/libXfont/src/builtins/file.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2011-03-25 15:37:13 +0000
committermarha <marha@users.sourceforge.net>2011-03-25 15:37:13 +0000
commit41a502478a2972358dec934d82ee401c61a5cd36 (patch)
tree3fda8100e6da9b4a2863789e393016a750502067 /libXfont/src/builtins/file.c
parent81aeaf653a832c4054d9a40b1cc796911521a739 (diff)
parent272e57235cd60a2e65ac8258d96a02eb3939b687 (diff)
downloadvcxsrv-41a502478a2972358dec934d82ee401c61a5cd36.tar.gz
vcxsrv-41a502478a2972358dec934d82ee401c61a5cd36.tar.bz2
vcxsrv-41a502478a2972358dec934d82ee401c61a5cd36.zip
svn merge ^/branches/released .
Diffstat (limited to 'libXfont/src/builtins/file.c')
-rw-r--r--libXfont/src/builtins/file.c263
1 files changed, 130 insertions, 133 deletions
diff --git a/libXfont/src/builtins/file.c b/libXfont/src/builtins/file.c
index f08f67f88..9fcc25f3f 100644
--- a/libXfont/src/builtins/file.c
+++ b/libXfont/src/builtins/file.c
@@ -1,133 +1,130 @@
-/*
- * Id: file.c,v 1.2 1999/11/02 06:16:47 keithp Exp $
- *
- * Copyright 1999 SuSE, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of SuSE not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. SuSE makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Keith Packard, SuSE, Inc.
- */
-/* $XFree86: xc/lib/font/builtins/file.c,v 1.3 1999/12/30 02:29:49 robin Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <string.h>
-#include "builtin.h"
-
-typedef struct _BuiltinIO {
- int offset;
- BuiltinFilePtr file;
-} BuiltinIORec, *BuiltinIOPtr;
-
-static int
-BuiltinFill (BufFilePtr f)
-{
- int left, len;
- BuiltinIOPtr io = ((BuiltinIOPtr) f->private);
-
- left = io->file->len - io->offset;
- if (left <= 0)
- {
- f->left = 0;
- return BUFFILEEOF;
- }
- len = BUFFILESIZE;
- if (len > left)
- len = left;
- memcpy (f->buffer, io->file->bits + io->offset, len);
- io->offset += len;
- f->left = len - 1;
- f->bufp = f->buffer + 1;
- return f->buffer[0];
-}
-
-static int
-BuiltinSkip (BufFilePtr f, int count)
-{
- BuiltinIOPtr io = ((BuiltinIOPtr) f->private);
- int curoff;
- int fileoff;
- int todo;
-
- curoff = f->bufp - f->buffer;
- fileoff = curoff + f->left;
- if (curoff + count <= fileoff) {
- f->bufp += count;
- f->left -= count;
- } else {
- todo = count - (fileoff - curoff);
- io->offset += todo;
- if (io->offset > io->file->len)
- io->offset = io->file->len;
- if (io->offset < 0)
- io->offset = 0;
- f->left = 0;
- }
- return count;
-}
-
-static int
-BuiltinClose (BufFilePtr f, int unused)
-{
- BuiltinIOPtr io = ((BuiltinIOPtr) f->private);
-
- free (io);
- return 1;
-}
-
-
-FontFilePtr
-BuiltinFileOpen (char *name)
-{
- int i;
- BuiltinIOPtr io;
- BufFilePtr raw, cooked;
-
- if (*name == '/') name++;
- for (i = 0; i < builtin_files_count; i++)
- if (!strcmp (name, builtin_files[i].name))
- break;
- if (i == builtin_files_count)
- return NULL;
- io = malloc (sizeof (BuiltinIORec));
- if (!io)
- return NULL;
- io->offset = 0;
- io->file = (void *) &builtin_files[i];
- raw = BufFileCreate ((char *) io, BuiltinFill, 0, BuiltinSkip, BuiltinClose);
- if (!raw)
- {
- free (io);
- return NULL;
- }
- if ((cooked = BufFilePushZIP (raw)))
- raw = cooked;
- else
- {
- raw->left += raw->bufp - raw->buffer;
- raw->bufp = raw->buffer;
- }
- return (FontFilePtr) raw;
-}
-
-int
-BuiltinFileClose (FontFilePtr f, int unused)
-{
- return BufFileClose ((BufFilePtr) f, TRUE);
-}
+/*
+ * Copyright 1999 SuSE, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of SuSE not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. SuSE makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Keith Packard, SuSE, Inc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <string.h>
+#include "builtin.h"
+
+typedef struct _BuiltinIO {
+ int offset;
+ BuiltinFilePtr file;
+} BuiltinIORec, *BuiltinIOPtr;
+
+static int
+BuiltinFill (BufFilePtr f)
+{
+ int left, len;
+ BuiltinIOPtr io = ((BuiltinIOPtr) f->private);
+
+ left = io->file->len - io->offset;
+ if (left <= 0)
+ {
+ f->left = 0;
+ return BUFFILEEOF;
+ }
+ len = BUFFILESIZE;
+ if (len > left)
+ len = left;
+ memcpy (f->buffer, io->file->bits + io->offset, len);
+ io->offset += len;
+ f->left = len - 1;
+ f->bufp = f->buffer + 1;
+ return f->buffer[0];
+}
+
+static int
+BuiltinSkip (BufFilePtr f, int count)
+{
+ BuiltinIOPtr io = ((BuiltinIOPtr) f->private);
+ int curoff;
+ int fileoff;
+ int todo;
+
+ curoff = f->bufp - f->buffer;
+ fileoff = curoff + f->left;
+ if (curoff + count <= fileoff) {
+ f->bufp += count;
+ f->left -= count;
+ } else {
+ todo = count - (fileoff - curoff);
+ io->offset += todo;
+ if (io->offset > io->file->len)
+ io->offset = io->file->len;
+ if (io->offset < 0)
+ io->offset = 0;
+ f->left = 0;
+ }
+ return count;
+}
+
+static int
+BuiltinClose (BufFilePtr f, int unused)
+{
+ BuiltinIOPtr io = ((BuiltinIOPtr) f->private);
+
+ free (io);
+ return 1;
+}
+
+
+FontFilePtr
+BuiltinFileOpen (char *name)
+{
+ int i;
+ BuiltinIOPtr io;
+ BufFilePtr raw, cooked;
+
+ if (*name == '/') name++;
+ for (i = 0; i < builtin_files_count; i++)
+ if (!strcmp (name, builtin_files[i].name))
+ break;
+ if (i == builtin_files_count)
+ return NULL;
+ io = malloc (sizeof (BuiltinIORec));
+ if (!io)
+ return NULL;
+ io->offset = 0;
+ io->file = (void *) &builtin_files[i];
+ raw = BufFileCreate ((char *) io, BuiltinFill, 0, BuiltinSkip, BuiltinClose);
+ if (!raw)
+ {
+ free (io);
+ return NULL;
+ }
+ if ((cooked = BufFilePushZIP (raw)))
+ raw = cooked;
+ else
+ {
+ raw->left += raw->bufp - raw->buffer;
+ raw->bufp = raw->buffer;
+ }
+ return (FontFilePtr) raw;
+}
+
+int
+BuiltinFileClose (FontFilePtr f, int unused)
+{
+ return BufFileClose ((BufFilePtr) f, TRUE);
+}