Removed version number from file header.
[ira/wip.git] / source3 / printing / printfsp.c
index 09c61408843b9f1555324262d0bac674f4bb82b2..2560e1c2fed44f1433bcc15196af37d0793671a9 100644 (file)
@@ -1,8 +1,5 @@
-#define OLD_NTDOMAIN 1
-
 /* 
-   Unix SMB/Netbios implementation.
-   Version 3.0
+   Unix SMB/CIFS implementation.
    printing backend routines for smbd - using files_struct rather
    than only snum
    Copyright (C) Andrew Tridgell 1992-2000
 */
 
 #include "includes.h"
-extern int DEBUGLEVEL;
-
 
 /***************************************************************************
 open a print file and setup a fsp for it. This is a wrapper around
 print_job_start().
 ***************************************************************************/
 
-files_struct *print_fsp_open(connection_struct *conn,char *jobname)
+files_struct *print_fsp_open(connection_struct *conn, char *fname)
 {
        int jobid;
        SMB_STRUCT_STAT sbuf;
        extern struct current_user current_user;
-       files_struct *fsp = file_new();
+       files_struct *fsp = file_new(conn);
+       fstring name;
 
        if(!fsp)
                return NULL;
 
-       jobid = print_job_start(SNUM(conn), conn->vuid, jobname);
+       fstrcpy( name, "Remote Downlevel Document");
+       if (fname) {
+               char *p = strrchr(fname, '/');
+               fstrcat(name, " ");
+               if (!p)
+                       p = fname;
+               fstrcat(name, p);
+       }
+
+       jobid = print_job_start(&current_user, SNUM(conn), name);
        if (jobid == -1) {
                file_free(fsp);
                return NULL;
@@ -50,10 +55,6 @@ files_struct *print_fsp_open(connection_struct *conn,char *jobname)
        /* setup a full fsp */
        fsp->print_jobid = jobid;
        fsp->fd = print_job_fd(jobid);
-       conn->vfs_ops.fstat(fsp->fd, &sbuf);
-       fsp->mode = sbuf.st_mode;
-       fsp->inode = sbuf.st_ino;
-       fsp->dev = sbuf.st_dev;
        GetTimeOfDay(&fsp->open_time);
        fsp->vuid = current_user.vuid;
        fsp->size = 0;
@@ -73,6 +74,10 @@ files_struct *print_fsp_open(connection_struct *conn,char *jobname)
        string_set(&fsp->fsp_name,print_job_fname(jobid));
        fsp->wbmpx_ptr = NULL;      
        fsp->wcp = NULL; 
+       conn->vfs_ops.fstat(fsp,fsp->fd, &sbuf);
+       fsp->mode = sbuf.st_mode;
+       fsp->inode = sbuf.st_ino;
+       fsp->dev = sbuf.st_dev;
 
        conn->num_files_open++;
 
@@ -82,13 +87,19 @@ files_struct *print_fsp_open(connection_struct *conn,char *jobname)
 /****************************************************************************
 print a file - called on closing the file
 ****************************************************************************/
-void print_fsp_end(files_struct *fsp)
+void print_fsp_end(files_struct *fsp, BOOL normal_close)
 {
-       print_job_end(fsp->print_jobid);
+       if (fsp->share_mode == FILE_DELETE_ON_CLOSE) {
+               /*
+                * Truncate the job. print_job_end will take
+                * care of deleting it for us. JRA.
+                */
+               sys_ftruncate(fsp->fd, 0);
+       }
+
+       print_job_end(fsp->print_jobid, normal_close);
 
        if (fsp->fsp_name) {
                string_free(&fsp->fsp_name);
        }
 }
-
-#undef OLD_NTDOMAIN