| 655 | */ |
| 656 | |
| 657 | void |
| 658 | cupsdSaveAllClasses(void) |
| 659 | { |
| 660 | cups_file_t *fp; /* classes.conf file */ |
| 661 | char filename[1024], /* classes.conf filename */ |
| 662 | value[2048], /* Value string */ |
| 663 | *name; /* Current user name */ |
| 664 | cupsd_printer_t *pclass; /* Current printer class */ |
| 665 | int i; /* Looping var */ |
| 666 | cups_option_t *option; /* Current option */ |
| 667 | |
| 668 | |
| 669 | /* |
| 670 | * Create the classes.conf file... |
| 671 | */ |
| 672 | |
| 673 | snprintf(filename, sizeof(filename), "%s/classes.conf", ServerRoot); |
| 674 | |
| 675 | if ((fp = cupsdCreateConfFile(filename, ConfigFilePerm)) == NULL) |
| 676 | return; |
| 677 | |
| 678 | cupsdLogMessage(CUPSD_LOG_INFO, "Saving classes.conf..."); |
| 679 | |
| 680 | /* |
| 681 | * Write a small header to the file... |
| 682 | */ |
| 683 | |
| 684 | cupsFilePuts(fp, "# Class configuration file for " CUPS_SVERSION "\n"); |
| 685 | cupsFilePrintf(fp, "# Written by cupsd\n"); |
| 686 | cupsFilePuts(fp, "# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING\n"); |
| 687 | |
| 688 | /* |
| 689 | * Write each local class known to the system... |
| 690 | */ |
| 691 | |
| 692 | for (pclass = (cupsd_printer_t *)cupsArrayFirst(Printers); |
| 693 | pclass; |
| 694 | pclass = (cupsd_printer_t *)cupsArrayNext(Printers)) |
| 695 | { |
| 696 | /* |
| 697 | * Skip remote destinations and regular printers... |
| 698 | */ |
| 699 | |
| 700 | if ((pclass->type & CUPS_PRINTER_REMOTE) || |
| 701 | !(pclass->type & CUPS_PRINTER_CLASS)) |
| 702 | continue; |
| 703 | |
| 704 | /* |
| 705 | * Write printers as needed... |
| 706 | */ |
| 707 | |
| 708 | if (pclass == DefaultPrinter) |
| 709 | cupsFilePrintf(fp, "<DefaultClass %s>\n", pclass->name); |
| 710 | else |
| 711 | cupsFilePrintf(fp, "<Class %s>\n", pclass->name); |
| 712 | |
| 713 | if (pclass->printer_id) |
| 714 | cupsFilePrintf(fp, "PrinterId %d\n", pclass->printer_id); |
no test coverage detected