Logo Search packages:      
Sourcecode: gsoap version File versions

options.h

/*

options.h

Command line option handler for webserver.

--------------------------------------------------------------------------------
gSOAP XML Web services tools
Copyright (C) 2001-2004, Robert van Engelen, Genivia, Inc. All Rights Reserved.
This software is released under one of the following two licenses:
GPL or Genivia's license for commercial use.
--------------------------------------------------------------------------------
GPL license.

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA

Author contact information:
engelen@genivia.com / engelen@acm.org
--------------------------------------------------------------------------------
A commercial use license is available from Genivia, Inc., contact@genivia.com
--------------------------------------------------------------------------------

      The option structure defines a program option as follows:
      name        the name of the option, which may include a period to
                  define a one-character name for command-line options
                  (single character followed by a period and the full
                  name). The last option in an array MUST be NULL.
                  When the name is empty (""), then this option is used to
                  collect remaining command-line arguments, such as file
                  names and so on.
      selections: either must be NULL to define a boolean option. In this
                        case selected=0 is false and selected=1 is true.
                  or a space-delimited string of option values. In this
                        case 'selected' is set to # word in list.
                  or a single-word description for option values. In this
                        case the argument is stored in 'value' field.
      selected:   word index in 'selections' list, or 0/1 for boolean
                  option, or max length of string value a user can enter
                  (see below).
      value:            the (default) string value of option

      Example:

      static struct option options[] =
      { { "c.compress", NULL },     on/off option (-c turns it on)
        { "e.endpoint", "URL" },    this option requires an argument value
        { "name", "alphanum", 20, "demo" },
                              this option requires an argument value.
                              The default value will be "demo".
                              The HTML slot will be 20 chars wide.
        { "action", "start finish" }, this option requires an argument "start"
                              or "finish"
        { "", "file1 file2 ..." },  collect remaining arguments
        { NULL },             end of table
      };

      Functionality:

      int parse_options(int argc, char **argv, struct option *options)
      Parses options from the command line (argc, argv). When the command
      line options include the '-?' and '-help', a diagnostic 'Usage:'
      message is produced and the function returns 1 instead of a normal 0
      return value.

      void query_options(struct soap *soap, struct option *options)
      Parses options from the HTTP query string. This requires linking the
      httpget plugin. The function is normally called in the HTTP GET handler.
      
      int save_options(const char *file, const char *name, struct option *options)
      Saves an array of options to a file. The last option in the 'options'
      array MUST have a NULL name to delimit the array. Options are saved
      in XML format.

      int load_options(const char *file, const char *name, struct option *options)
      Parses options from a file saved with save_options(). The last option
      in the 'options' array MUST have a NULL name to delimit the array.

      int html_options(struct soap *soap, struct option *options)
      Produces an HTML table with options and form submit buttons to
      interactively change options through a Web page. The table is output
      via soap_send() which uses the current soap.socket or soap.sendfd
      descriptors. The table should be produced within a form, see also
      html_form_options().
      The HTML table uses the following picture files:
            checked.gif       check box (checked)
            unchecked.gif           check box (unchecked)
            selected.gif            radio button (selected)
            deselected.gif          radio button (deselected)

      int html_form_options(struct soap *soap, struct option *options)
      Produces an HTML form with action='' and method='get' (to send the
      request back to the current service. An HTML option table is produced
      within the form.
*/

struct option
{ const char *name;           /* name */
  const char *selections;     /* NULL (option does not require argument),
                           or one-word description,
                           or selection of possible values (separated by spaces) */
  int selected;               /* >=0: current selection in selections list */
  char *value;                /* parsed value (when 'selections' is one name) */
};

extern struct option *copy_options(const struct option *options);
extern void free_options(struct option *options);
extern int parse_options(int argc, char **argv, struct option *options);
extern void query_options(struct soap *soap, struct option *options);
extern int save_options(const char *file, const char *name, struct option *options);
extern int load_options(const char *file, const char *name, struct option *options);
extern int html_options(struct soap *soap, struct option *options);
extern int html_form_options(struct soap *soap, struct option *options);


Generated by  Doxygen 1.6.0   Back to index