]> www.fi.muni.cz Git - evince.git/blob - pdf/xpdf/BonoboFile.cc
Fixup pdfto* programs,
[evince.git] / pdf / xpdf / BonoboFile.cc
1 //========================================================================
2 //
3 // BonoboFile.cc
4 //
5 // Copyright 1999 Derek B. Noonburg assigned by Michael Meeks.
6 //
7 //========================================================================
8
9 #ifdef __GNUC__
10 #pragma implementation
11 #endif
12
13 #include <stdio.h>
14 #include <stdlib.h>
15 #include <stddef.h>
16 #ifndef WIN32
17 #include <unistd.h>
18 #endif
19 #include <string.h>
20 #include <ctype.h>
21
22 #include "BaseFile.h"
23
24 //define HARD_DEBUG
25
26 /* The open/close is done for you by the Bonobo server */
27
28 void
29 bfclose (BaseFile file)
30 {
31 }
32
33 size_t
34 bfread (void *ptr, size_t size, size_t nmemb, BaseFile file)
35 {
36   CORBA_long len;
37   CORBA_Environment ev;
38   GNOME_Stream_iobuf *buffer = NULL;
39
40   g_return_val_if_fail (ptr != NULL, 0);
41
42 #ifdef HARD_DEBUG
43   printf ("read %p %d %d to %p\n", file, size, nmemb, ptr);
44 #endif
45   len = GNOME_Stream_read (file, size*nmemb, &buffer, &ev);
46   g_return_val_if_fail (ev._major == CORBA_NO_EXCEPTION, 0);
47
48 #ifdef HARD_DEBUG
49   printf ("Read %d bytes %p %d\n", len, buffer->_buffer, buffer->_length);
50 #endif
51   memcpy (ptr, buffer->_buffer, buffer->_length);
52
53   return len;
54 }
55
56 int
57 bfseek (BaseFile file, long offset, int whence)
58 {
59   CORBA_Environment ev;
60   GNOME_Stream_SeekType t;
61 #ifdef HARD_DEBUG
62   printf ("Seek %p %d %d\n", file, offset, whence);
63 #endif
64   if (whence == SEEK_SET)
65     t = GNOME_Stream_SEEK_SET;
66   else if (whence == SEEK_CUR)
67     t = GNOME_Stream_SEEK_CUR;
68   else
69     t = GNOME_Stream_SEEK_END;
70   
71   return GNOME_Stream_seek (file, offset, t, &ev);
72 }
73
74 void
75 brewind (BaseFile file)
76 {
77   CORBA_Environment ev;
78 #ifdef HARD_DEBUG
79   printf ("rewind %p\n", file);
80 #endif
81   GNOME_Stream_seek (file, 0, GNOME_Stream_SEEK_SET, &ev);
82 }
83
84 long
85 bftell (BaseFile file)
86 {
87   CORBA_Environment ev;
88   CORBA_long pos;
89 #ifdef HARD_DEBUG
90   printf ("tell %p\n", file);
91 #endif
92   pos = GNOME_Stream_seek (file, 0, GNOME_Stream_SEEK_CUR, &ev);
93 #ifdef HARD_DEBUG
94   printf ("tell returns %d\n", pos);
95 #endif
96
97   return pos;
98 }