summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
Diffstat (limited to 'source3')
-rw-r--r--source3/smbd/ipc.c46
1 files changed, 41 insertions, 5 deletions
diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c
index 5c923acd49..055b8344bb 100644
--- a/source3/smbd/ipc.c
+++ b/source3/smbd/ipc.c
@@ -531,6 +531,42 @@ static int check_printq_info(struct pack_desc* desc,
return True;
}
+/* turn a print job status into a on the wire status
+ right now these are complete guesses - need to fill them in (tridge)
+*/
+static int printj_status(int v)
+{
+ switch (v) {
+ case LPQ_QUEUED:
+ return 0;
+ case LPQ_PAUSED:
+ return 1;
+ case LPQ_SPOOLING:
+ return 2;
+ case LPQ_PRINTING:
+ return 3;
+ }
+ return 4;
+}
+
+/* turn a print queue status into a on the wire status
+ right now these are complete guesses - need to fill them in (tridge)
+*/
+static int printq_status(int v)
+{
+ switch (v) {
+ case LPQ_QUEUED:
+ return 0;
+ case LPQ_PAUSED:
+ return 1;
+ case LPQ_SPOOLING:
+ return 2;
+ case LPQ_PRINTING:
+ return 3;
+ }
+ return 4;
+}
+
static void fill_printjob_info(connection_struct *conn, int snum, int uLevel,
struct pack_desc* desc,
print_queue_struct* queue, int n)
@@ -548,7 +584,7 @@ static void fill_printjob_info(connection_struct *conn, int snum, int uLevel,
PACKS(desc,"B10","PM_Q_RAW"); /* szDataType */
PACKS(desc,"z",""); /* pszParms */
PACKI(desc,"W",n+1); /* uPosition */
- PACKI(desc,"W",queue->status); /* fsStatus */
+ PACKI(desc,"W",printj_status(queue->status)); /* fsStatus */
PACKS(desc,"z",""); /* pszStatus */
PACKI(desc,"D",t); /* ulSubmitted */
PACKI(desc,"D",queue->size); /* ulSize */
@@ -558,7 +594,7 @@ static void fill_printjob_info(connection_struct *conn, int snum, int uLevel,
PACKI(desc,"W",queue->priority); /* uPriority */
PACKS(desc,"z",queue->user); /* pszUserName */
PACKI(desc,"W",n+1); /* uPosition */
- PACKI(desc,"W",queue->status); /* fsStatus */
+ PACKI(desc,"W",printj_status(queue->status)); /* fsStatus */
PACKI(desc,"D",t); /* ulSubmitted */
PACKI(desc,"D",queue->size); /* ulSize */
PACKS(desc,"z","Samba"); /* pszComment */
@@ -702,7 +738,7 @@ static void fill_printq_info(connection_struct *conn, int snum, int uLevel,
PACKS(desc,"z",Expand(conn,snum,SERVICE(snum)));
break;
case 51:
- PACKI(desc,"K",status->status);
+ PACKI(desc,"K",printq_status(status->status));
break;
}
@@ -724,7 +760,7 @@ static void fill_printq_info(connection_struct *conn, int snum, int uLevel,
PACKI(desc,"W",LPSTAT_OK); /* status */
} else {
PACKS(desc,"z",status->message);
- PACKI(desc,"W",status->status); /* status */
+ PACKI(desc,"W",printq_status(status->status)); /* status */
}
PACKI(desc,(uLevel == 1 ? "W" : "N"),count);
}
@@ -742,7 +778,7 @@ static void fill_printq_info(connection_struct *conn, int snum, int uLevel,
PACKI(desc,"W",LPSTAT_OK); /* fsStatus */
} else {
PACKS(desc,"z",status->message); /* pszComment */
- PACKI(desc,"W",status->status); /* fsStatus */
+ PACKI(desc,"W",printq_status(status->status)); /* fsStatus */
}
PACKI(desc,(uLevel == 3 ? "W" : "N"),count); /* cJobs */
PACKS(desc,"z",SERVICE(snum)); /* pszPrinters */