diff options
| author | Tim Potter <tpot@samba.org> | 2000-11-04 18:24:15 +0000 | 
|---|---|---|
| committer | Tim Potter <tpot@samba.org> | 2000-11-04 18:24:15 +0000 | 
| commit | 34b397f8ac0afe36bd9b12d87b8080a1e286072d (patch) | |
| tree | f9438320a7344459195b0409500959700d4c6e51 | |
| parent | 5073d116431a03b2d6e00f529dd03c5c19264c33 (diff) | |
| download | samba-34b397f8ac0afe36bd9b12d87b8080a1e286072d.tar.gz samba-34b397f8ac0afe36bd9b12d87b8080a1e286072d.tar.bz2 samba-34b397f8ac0afe36bd9b12d87b8080a1e286072d.zip  | |
Merge of printing improvements/fixes from appliance branch.
(This used to be commit 8e163eac33e8f407de00c318d3de29fcfbf2b8a7)
| -rw-r--r-- | source3/printing/printing.c | 61 | 
1 files changed, 60 insertions, 1 deletions
diff --git a/source3/printing/printing.c b/source3/printing/printing.c index c691573c0a..e1f58ba6a5 100644 --- a/source3/printing/printing.c +++ b/source3/printing/printing.c @@ -808,7 +808,7 @@ BOOL print_job_end(int jobid)  	SMB_STRUCT_STAT sbuf;  	pstring current_directory;  	pstring print_directory; -	char *wd, *p; +	char *wd, *p, *printer_name;  	pstring jobname;  	if (!pjob) @@ -866,6 +866,13 @@ BOOL print_job_end(int jobid)  	/* force update the database */  	print_cache_flush(snum); +	/* Send a printer notify message */ + +	printer_name = PRINTERNAME(snum); + +	message_send_all(MSG_PRINTER_NOTIFY, printer_name,  +			 strlen(printer_name) + 1); +  	return True;  } @@ -923,6 +930,22 @@ static int traverse_count_fn_queue(TDB_CONTEXT *t, TDB_DATA key, TDB_DATA data,  	return 0;  } +/* Sort print jobs by submittal time */ + +static int printjob_comp(print_queue_struct *j1, print_queue_struct *j2) +{ +	/* Silly cases */ + +	if (!j1 && !j2) return 0; +	if (!j1) return -1; +	if (!j2) return 1; + +	/* Sort on job start time */ + +	if (j1->time == j2->time) return 0; +	return (j1->time > j2->time) ? 1 : -1; +} +  /****************************************************************************  get a printer queue listing  ****************************************************************************/ @@ -974,6 +997,12 @@ int print_queue_status(int snum,  		free(data.dptr);  	} +	/* Sort the queue by submission time otherwise they are displayed +	   in hash order. */ + +	qsort(tstruct.queue, tstruct.qcount, sizeof(print_queue_struct), +	      QSORT_CAST(printjob_comp)); +  	*queue = tstruct.queue;  	return tstruct.qcount;  } @@ -1008,6 +1037,17 @@ BOOL print_queue_pause(struct current_user *user, int snum, int *errcode)  	/* force update the database */  	print_cache_flush(snum); +	/* Send a printer notify message */ + +	if (ret == 0) { +		char *printer_name; + +		printer_name = PRINTERNAME(snum); + +		message_send_all(MSG_PRINTER_NOTIFY, printer_name,  +				 strlen(printer_name) + 1); +	} +  	return ret == 0;  } @@ -1029,6 +1069,17 @@ BOOL print_queue_resume(struct current_user *user, int snum, int *errcode)  	/* force update the database */  	print_cache_flush(snum); +	/* Send a printer notify message */ + +	if (ret == 0) { +		char *printer_name; + +		printer_name = PRINTERNAME(snum); + +		message_send_all(MSG_PRINTER_NOTIFY, printer_name,  +				 strlen(printer_name) + 1); +	} +  	return ret == 0;  } @@ -1039,6 +1090,7 @@ BOOL print_queue_purge(struct current_user *user, int snum, int *errcode)  {  	print_queue_struct *queue;  	print_status_struct status; +	char *printer_name;  	int njobs, i;  	njobs = print_queue_status(snum, &queue, &status); @@ -1051,6 +1103,13 @@ BOOL print_queue_purge(struct current_user *user, int snum, int *errcode)  	print_cache_flush(snum);  	safe_free(queue); +	/* Send a printer notify message */ + +	printer_name = PRINTERNAME(snum); + +	message_send_all(MSG_PRINTER_NOTIFY, printer_name,  +			 strlen(printer_name) + 1); +  	return True;  }  #undef OLD_NTDOMAIN  | 
