]> git.sur5r.net Git - bacula/docs/commitdiff
Update plugin API
authorKern Sibbald <kern@sibbald.com>
Mon, 6 Oct 2008 07:35:32 +0000 (07:35 +0000)
committerKern Sibbald <kern@sibbald.com>
Mon, 6 Oct 2008 07:35:32 +0000 (07:35 +0000)
docs/manuals/en/concepts/concepts.kilepr
docs/manuals/en/concepts/newfeatures.tex
docs/manuals/en/install/dirdconf.tex

index a1fa57599134a51b8b789e451002d1486bd76ca6..f0abd040b072f50958962e0f04c5d5880e0b4a38 100644 (file)
@@ -161,10 +161,10 @@ order=-1
 
 [item:newfeatures.tex]
 archive=true
-column=47
+column=49
 encoding=UTF-8
 highlight=LaTeX
-line=259
+line=544
 open=true
 order=0
 
index 4c8a1ad7cf6e7603d54b61d3ac7c7a799e5ccceb..5a571dc9c47c7a5f42c396d4137c8741cd7246a6 100644 (file)
@@ -542,7 +542,7 @@ catalog.
 \section{Miscellaneous}
 \index[general]{Misc New Features}
 
-\subsection{Allow Mixed Priority = \lt{}yes|no\g{}}
+\subsection{Allow Mixed Priority = \lt{}yes|no\gt{}}
    This directive is only implemented in version 2.5 and later.  When
    set to {\bf yes} (default {\bf no}), this job may run even if lower
    priority jobs are already running.  This means a high priority job
@@ -1317,6 +1317,59 @@ struct restore_pkt {
 };
 \end{verbatim}
 
+Typical code to create a regular file would be the following:
+
+\begin{verbatim}
+   struct plugin_ctx *p_ctx = (struct plugin_ctx *)ctx->pContext;
+   time_t now = time(NULL);
+   sp->fname = p_ctx->fname;   /* set the full path/filename I want to create */
+   sp->type = FT_REG;
+   sp->statp.st_mode = 0700 | S_IFREG;
+   sp->statp.st_ctime = now;
+   sp->statp.st_mtime = now;
+   sp->statp.st_atime = now;
+   sp->statp.st_size = -1;
+   sp->statp.st_blksize = 4096;
+   sp->statp.st_blocks = 1;
+   return bRC_OK;
+\end{verbatim}
+
+This will create a virtual file.  If you are creating a file that actually 
+exists, you will most likely want to fill the statp packet using the
+stat() system call.
+
+Creating a directory is similar, but requires a few extra steps:
+
+\begin{verbatim}
+   struct plugin_ctx *p_ctx = (struct plugin_ctx *)ctx->pContext;
+   time_t now = time(NULL);
+   sp->fname = p_ctx->fname;   /* set the full path I want to create */
+   sp->link = xxx; where xxx is p_ctx->fname with a trailing forward slash
+   sp->type = FT_DIREND
+   sp->statp.st_mode = 0700 | S_IFDIR;
+   sp->statp.st_ctime = now;
+   sp->statp.st_mtime = now;
+   sp->statp.st_atime = now;
+   sp->statp.st_size = -1;
+   sp->statp.st_blksize = 4096;
+   sp->statp.st_blocks = 1;
+   return bRC_OK;
+\end{verbatim}
+
+The link field must be set with the full cononical path name, which always 
+ends with a forward slash.  If you do not terminate it with a forward slash,
+you will surely have problems later.
+
+As with the example that creates a file, if you are backing up a real
+directory, you will want to do an stat() on the directory.  
+
+Note, if you want the directory permissions and times to be correctly
+restored, you must create the directory {\bf after} all the file directories
+have been sent to Bacula. That allows the restore process to restore all the
+files in a directory using default directory options, then at the end, restore
+the directory permissions.  If you do it the other way around, each time you
+restore a file, the OS will modify the time values for the directory entry.
+
 \subsection{setFileAttributes(bpContext *ctx, struct restore\_pkt *rp)}
 This is call not yet implemented.
 
index 4c88d7a949a3d920e93122c291daa4c661ff5d2d..21741bea3cd4004c7b3ef54f9d045a303df9e7e7 100644 (file)
@@ -1687,7 +1687,7 @@ priority ones.  This insures that Bacula will examine the jobs in the
 correct order, and that your priority scheme will be respected.
 
 \label{AllowMixedPriority}
-\item [Allow Mixed Priority = \lt{}yes|no\g{}]
+\item [Allow Mixed Priority = \lt{}yes|no\gt{}]
 \index[dir]{Allow Mixed Priority}
 \index[dir]{Directive|Allow Mixed Priority}