Author: vlendec Date: 2006-05-19 20:40:44 +0000 (Fri, 19 May 2006) New Revision: 15722
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=15722 Log: Lift set_saved_ntstatus from print_fsp_open. Volker Modified: trunk/source/printing/printfsp.c trunk/source/smbd/open.c trunk/source/smbd/reply.c Changeset: Modified: trunk/source/printing/printfsp.c =================================================================== --- trunk/source/printing/printfsp.c 2006-05-19 19:54:39 UTC (rev 15721) +++ trunk/source/printing/printfsp.c 2006-05-19 20:40:44 UTC (rev 15722) @@ -28,7 +28,8 @@ print_job_start(). ***************************************************************************/ -files_struct *print_fsp_open(connection_struct *conn, const char *fname) +NTSTATUS print_fsp_open(connection_struct *conn, const char *fname, + files_struct **result) { int jobid; SMB_STRUCT_STAT sbuf; @@ -38,8 +39,7 @@ status = file_new(conn, &fsp); if(!NT_STATUS_IS_OK(status)) { - set_saved_ntstatus(status); - return NULL; + return status; } fstrcpy( name, "Remote Downlevel Document"); @@ -54,8 +54,9 @@ jobid = print_job_start(¤t_user, SNUM(conn), name, NULL); if (jobid == -1) { + status = map_nt_error_from_unix(errno); file_free(fsp); - return NULL; + return status; } /* Convert to RAP id. */ @@ -64,7 +65,7 @@ /* We need to delete the entry in the tdb. */ pjob_delete(lp_const_servicename(SNUM(conn)), jobid); file_free(fsp); - return NULL; + return NT_STATUS_ACCESS_DENIED; /* No errno around here */ } /* setup a full fsp */ @@ -91,7 +92,8 @@ conn->num_files_open++; - return fsp; + *result = fsp; + return NT_STATUS_OK; } /**************************************************************************** Modified: trunk/source/smbd/open.c =================================================================== --- trunk/source/smbd/open.c 2006-05-19 19:54:39 UTC (rev 15721) +++ trunk/source/smbd/open.c 2006-05-19 20:40:44 UTC (rev 15722) @@ -1115,7 +1115,11 @@ DEBUG(10, ("open_file_ntcreate: printer open fname=%s\n", fname)); - return print_fsp_open(conn, fname); + status = print_fsp_open(conn, fname, &fsp); + if (!NT_STATUS_IS_OK(status)) { + set_saved_ntstatus(status); + } + return fsp; } /* We add aARCH to this as this mode is only used if the file is Modified: trunk/source/smbd/reply.c =================================================================== --- trunk/source/smbd/reply.c 2006-05-19 19:54:39 UTC (rev 15721) +++ trunk/source/smbd/reply.c 2006-05-19 20:40:44 UTC (rev 15722) @@ -3591,6 +3591,8 @@ { int outsize = 0; files_struct *fsp; + NTSTATUS status; + START_PROFILE(SMBsplopen); if (!CAN_PRINT(conn)) { @@ -3599,11 +3601,11 @@ } /* Open for exclusive use, write only. */ - fsp = print_fsp_open(conn, NULL); + status = print_fsp_open(conn, NULL, &fsp); - if (!fsp) { + if (!NT_STATUS_IS_OK(status)) { END_PROFILE(SMBsplopen); - return(UNIXERROR(ERRDOS,ERRnoaccess)); + return(ERROR_NT(status)); } outsize = set_message(outbuf,1,0,True);