]> git.sur5r.net Git - bacula/docs/commitdiff
Update
authorKern Sibbald <kern@sibbald.com>
Fri, 3 Oct 2008 06:24:44 +0000 (06:24 +0000)
committerKern Sibbald <kern@sibbald.com>
Fri, 3 Oct 2008 06:24:44 +0000 (06:24 +0000)
docs/manuals/en/concepts/concepts.kilepr
docs/manuals/en/concepts/newfeatures.tex

index 6e75eff5da9bc23d67f97f5fe52b729bdf947388..b95b90d6d778f3a01eb3c9a9dab46690baf33d24 100644 (file)
@@ -161,10 +161,10 @@ order=-1
 
 [item:newfeatures.tex]
 archive=true
-column=0
+column=22
 encoding=UTF-8
 highlight=LaTeX
-line=1188
+line=1224
 open=true
 order=0
 
index 4c4bba09f254213c47ea039c1a9c639875409ca5..9b06753384f3daf146069b9c9f3c7fbe19effc0b 100644 (file)
@@ -1232,7 +1232,10 @@ Called when done restoring a file.
 
 \subsection{pluginIO(bpContext *ctx, struct io\_pkt *io)}
 Called to do the input (backup) or output (restore) of data from or to a
-file. 
+file. These routines simulate the Unix read(), write(), open(), close(), 
+and lseek() I/O calls, and the arguments are passed in the packet and
+the return values are also placed in the packet.  In addition for Win32
+systems the plugin must return two additional values (described below).
 
 \begin{verbatim}
  enum {
@@ -1247,15 +1250,80 @@ struct io_pkt {
    int32_t func;                      /* Function code */
    int32_t count;                     /* read/write count */
    mode_t mode;                       /* permissions for created files */
-   int32_t flags;                     /* open flags (e.g. O_WRONLY ...) */
+   int32_t flags;                     /* Open flags */
    char *buf;                         /* read/write buffer */
+   const char *fname;                 /* open filename */
    int32_t status;                    /* return status */
    int32_t io_errno;                  /* errno code */
-   int32_t whence;
-   boffset_t offset;
+   int32_t lerror;                    /* Win32 error code */
+   int32_t whence;                    /* lseek argument */
+   boffset_t offset;                  /* lseek argument */
+   bool win32;                        /* Win32 GetLastError returned */
 };
 \end{verbatim}
 
+The particular Unix function being simulated is indicated by the {\bf func}, 
+which will have one of the IO\_OPEN, IO\_READ, ... codes listed above.  
+The status code that would be returned from a Unix call is returned in
+{\bf status} for IO\_OPEN, IO\_CLOSE, IO\_READ, and IO\_WRITE. The return value for 
+IO\_SEEK is returned in {\bf offset} which in general is a 64 bit value.
+
+When there is an error on Unix systems, you must always set io\_error, and
+on a Win32 system, you must always set win32, and the returned value from
+the OS call GetLastError() in lerror.
+
+For all except IO\_SEEK, {\bf status} is the return result.  In general it is
+a positive integer unless there is an error in which case it is -1.
+
+The following describes each call and what you get and what you
+should return:
+
+\begin{description}
+ \item [IO\_OPEN]
+   You will be passed fname, mode, and flags.
+   You must set on return: status, and if there is a Unix error
+   io\_errno must be set to the errno value, and if there is a 
+   Win32 error win32 and lerror. 
+
+ \item [IO\_READ]
+  You will be passed: count, and buf (buffer of size count).
+  You must set on return: status to the number of bytes 
+  read into the buffer (buf) or -1 on an error, 
+  and if there is a Unix error
+  io\_errno must be set to the errno value, and if there is a
+  Win32 error, win32 and lerror must be set.
+
+ \item [IO\_WRITE]
+  You will be passed: count, and buf (buffer of size count).
+  You must set on return: status to the number of bytes 
+  written from the buffer (buf) or -1 on an error, 
+  and if there is a Unix error
+  io\_errno must be set to the errno value, and if there is a
+  Win32 error, win32 and lerror must be set.
+
+ \item [IO\_CLOSE]
+  Nothing will be passed to you.  On return you must set 
+  status to 0 on success and -1 on failure.  If there is a Unix error
+  io\_errno must be set to the errno value, and if there is a
+  Win32 error, win32 and lerror must be set.
+
+ \item [IO\_LSEEK]
+  You will be passed: offset, and whence. offset is a 64 bit value
+  and is the position to seek to relative to whence.  whence is one
+  of the following SEEK\_SET, SEEK\_CUR, or SEEK\_END indicating to
+  either to seek to an absolute possition, relative to the current 
+  position or relative to the end of the file.
+  You must pass back in offset the absolute location to which you 
+  seeked. If there is an error, offset should be set to -1.
+  If there is a Unix error
+  io\_errno must be set to the errno value, and if there is a
+  Win32 error, win32 and lerror must be set.
+
+  Note: Bacula will call IO\_SEEK only when writing a sparse file.
+  
+\end{description}
+
+
 
 \subsection{createFile(bpContext *ctx, struct restore\_pkt *rp)}
 Called to create a file during a Restore job before restoring the data. The data in the