void notify_printer_status(struct tevent_context *ev, struct messaging_context *msg_ctx, int snum, uint32 status) { const char *sharename = lp_servicename(talloc_tos(), snum); if (sharename) notify_printer_status_byname(ev, msg_ctx, sharename, status); }
static BOOL do_printnotify(const pid_t pid, const int argc, const char **argv) { const char *cmd; /* Check for subcommand */ if (argc == 1) { fprintf(stderr, "Must specify subcommand:\n"); fprintf(stderr, "\tqueuepause <printername>\n"); fprintf(stderr, "\tqueueresume <printername>\n"); fprintf(stderr, "\tjobpause <printername> <unix jobid>\n"); fprintf(stderr, "\tjobresume <printername> <unix jobid>\n"); fprintf(stderr, "\tjobdelete <printername> <unix jobid>\n"); fprintf(stderr, "\tprinter <printername> <comment|port|" "driver> <value>\n"); return False; } cmd = argv[1]; if (strcmp(cmd, "queuepause") == 0) { if (argc != 3) { fprintf(stderr, "Usage: smbcontrol <dest> printnotify" " queuepause <printername>\n"); return False; } notify_printer_status_byname(argv[2], PRINTER_STATUS_PAUSED); goto send; } else if (strcmp(cmd, "queueresume") == 0) { if (argc != 3) { fprintf(stderr, "Usage: smbcontrol <dest> printnotify" " queuereume <printername>\n"); return False; } notify_printer_status_byname(argv[2], PRINTER_STATUS_OK); goto send; } else if (strcmp(cmd, "jobpause") == 0) { int jobid; if (argc != 4) { fprintf(stderr, "Usage: smbcontrol <dest> printnotify" " jobpause <printername> <unix-jobid>\n"); return False; } jobid = atoi(argv[3]); notify_job_status_byname( argv[2], jobid, JOB_STATUS_PAUSED, SPOOLSS_NOTIFY_MSG_UNIX_JOBID); goto send; } else if (strcmp(cmd, "jobresume") == 0) { int jobid; if (argc != 4) { fprintf(stderr, "Usage: smbcontrol <dest> printnotify" " jobpause <printername> <unix-jobid>\n"); return False; } jobid = atoi(argv[3]); notify_job_status_byname( argv[2], jobid, JOB_STATUS_QUEUED, SPOOLSS_NOTIFY_MSG_UNIX_JOBID); goto send; } else if (strcmp(cmd, "jobdelete") == 0) { int jobid; if (argc != 4) { fprintf(stderr, "Usage: smbcontrol <dest> printnotify" " jobpause <printername> <unix-jobid>\n"); return False; } jobid = atoi(argv[3]); notify_job_status_byname( argv[2], jobid, JOB_STATUS_DELETING, SPOOLSS_NOTIFY_MSG_UNIX_JOBID); notify_job_status_byname( argv[2], jobid, JOB_STATUS_DELETING| JOB_STATUS_DELETED, SPOOLSS_NOTIFY_MSG_UNIX_JOBID); goto send; } else if (strcmp(cmd, "printer") == 0) { uint32 attribute; if (argc != 5) { fprintf(stderr, "Usage: smbcontrol <dest> printnotify " "printer <printername> <comment|port|driver> " "<value>\n"); return False; } if (strcmp(argv[3], "comment") == 0) { attribute = PRINTER_NOTIFY_COMMENT; } else if (strcmp(argv[3], "port") == 0) { attribute = PRINTER_NOTIFY_PORT_NAME; } else if (strcmp(argv[3], "driver") == 0) { attribute = PRINTER_NOTIFY_DRIVER_NAME; } else { fprintf(stderr, "Invalid printer command '%s'\n", argv[3]); return False; } notify_printer_byname(argv[2], attribute, argv[4]); goto send; } fprintf(stderr, "Invalid subcommand '%s'\n", cmd); return False; send: print_notify_send_messages(0); return True; }