Imported Upstream version 2.2.2
[platform/upstream/cups.git] / cups / testadmin.c
1 /*
2  * Admin function test program for CUPS.
3  *
4  * Copyright 2007-2013 by Apple Inc.
5  * Copyright 2006 by Easy Software Products.
6  *
7  * These coded instructions, statements, and computer programs are the
8  * property of Apple Inc. and are protected by Federal copyright
9  * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
10  * which should have been included with this file.  If this file is
11  * missing or damaged, see the license at "http://www.cups.org/".
12  *
13  * This file is subject to the Apple OS-Developed Software exception.
14  */
15
16 /*
17  * Include necessary headers...
18  */
19
20 #include "adminutil.h"
21 #include "string-private.h"
22
23
24 /*
25  * Local functions...
26  */
27
28 static void     show_settings(int num_settings, cups_option_t *settings);
29
30
31 /*
32  * 'main()' - Main entry.
33  */
34
35 int                                     /* O - Exit status */
36 main(int  argc,                         /* I - Number of command-line args */
37      char *argv[])                      /* I - Command-line arguments */
38 {
39   int           i,                      /* Looping var */
40                 num_settings;           /* Number of settings */
41   cups_option_t *settings;              /* Settings */
42   http_t        *http;                  /* Connection to server */
43
44
45  /*
46   * Connect to the server using the defaults...
47   */
48
49   http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC,
50                       cupsEncryption(), 1, 30000, NULL);
51
52  /*
53   * Set the current configuration if we have anything on the command-line...
54   */
55
56   if (argc > 1)
57   {
58     for (i = 1, num_settings = 0, settings = NULL; i < argc; i ++)
59       num_settings = cupsParseOptions(argv[i], num_settings, &settings);
60
61     if (cupsAdminSetServerSettings(http, num_settings, settings))
62     {
63       puts("New server settings:");
64       cupsFreeOptions(num_settings, settings);
65     }
66     else
67     {
68       printf("Server settings not changed: %s\n", cupsLastErrorString());
69       return (1);
70     }
71   }
72   else
73     puts("Current server settings:");
74
75  /*
76   * Get the current configuration...
77   */
78
79   if (cupsAdminGetServerSettings(http, &num_settings, &settings))
80   {
81     show_settings(num_settings, settings);
82     cupsFreeOptions(num_settings, settings);
83     return (0);
84   }
85   else
86   {
87     printf("    %s\n", cupsLastErrorString());
88     return (1);
89   }
90 }
91
92
93 /*
94  * 'show_settings()' - Show settings in the array...
95  */
96
97 static void
98 show_settings(
99     int           num_settings,         /* I - Number of settings */
100     cups_option_t *settings)            /* I - Settings */
101 {
102   while (num_settings > 0)
103   {
104     printf("    %s=%s\n", settings->name, settings->value);
105
106     settings ++;
107     num_settings --;
108   }
109 }