~ubuntu-branches/ubuntu/vivid/grass/vivid-proposed

« back to all changes in this revision

Viewing changes to db/db.columns/main.c

  • Committer: Package Import Robot
  • Author(s): Bas Couwenberg
  • Date: 2015-02-20 23:12:08 UTC
  • mfrom: (8.2.6 experimental)
  • Revision ID: package-import@ubuntu.com-20150220231208-1u6qvqm84v430b10
Tags: 7.0.0-1~exp1
* New upstream release.
* Update python-ctypes-ternary.patch to use if/else instead of and/or.
* Drop check4dev patch, rely on upstream check.
* Add build dependency on libpq-dev to grass-dev for libpq-fe.h.
* Drop patches applied upstream, refresh remaining patches.
* Update symlinks for images switched from jpg to png.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
/****************************************************************************
 
3
 *
 
4
 * MODULE:       db.columns
 
5
 * AUTHOR(S):    Radim Blazek <radim.blazek gmail.com> (original contributor)
 
6
 *               Glynn Clements <glynn gclements.plus.com>, Markus Neteler <neteler itc.it>
 
7
 * PURPOSE:      list the column names for a table
 
8
 * COPYRIGHT:    (C) 2002-2006 by the GRASS Development Team
 
9
 *
 
10
 *               This program is free software under the GNU General Public
 
11
 *               License (>=v2). Read the file COPYING that comes with GRASS
 
12
 *               for details.
 
13
 *
 
14
 *****************************************************************************/
 
15
 
 
16
#include <stdlib.h>
 
17
 
 
18
#include <grass/gis.h>
 
19
#include <grass/dbmi.h>
 
20
#include <grass/glocale.h>
 
21
 
 
22
 
 
23
struct
 
24
{
 
25
    char *driver, *database, *table;
 
26
} parms;
 
27
 
 
28
 
 
29
/* function prototypes */
 
30
static void parse_command_line(int, char **);
 
31
 
 
32
 
 
33
int main(int argc, char **argv)
 
34
{
 
35
    dbDriver *driver;
 
36
    dbHandle handle;
 
37
    dbTable *table;
 
38
    dbString table_name;
 
39
    int col, ncols;
 
40
 
 
41
    parse_command_line(argc, argv);
 
42
 
 
43
    if (!db_table_exists(parms.driver, parms.database, parms.table)) {
 
44
        G_warning(_("Table <%s> not found in database <%s> using driver <%s>"),
 
45
                   parms.table, parms.database, parms.driver);
 
46
        exit(EXIT_FAILURE);
 
47
    }
 
48
 
 
49
    driver = db_start_driver(parms.driver);
 
50
    if (driver == NULL)
 
51
        G_fatal_error(_("Unable to start driver <%s>"), parms.driver);
 
52
 
 
53
    db_init_handle(&handle);
 
54
    db_set_handle(&handle, parms.database, NULL);
 
55
    if (db_open_database(driver, &handle) != DB_OK)
 
56
        G_fatal_error(_("Unable to open database <%s>"), parms.database);
 
57
    db_set_error_handler_driver(driver);
 
58
 
 
59
    db_init_string(&table_name);
 
60
    db_set_string(&table_name, parms.table);
 
61
    if (db_describe_table(driver, &table_name, &table) != DB_OK)
 
62
        G_fatal_error(_("Unable to describe table <%s>"), parms.table);
 
63
 
 
64
    db_close_database(driver);
 
65
    db_shutdown_driver(driver);
 
66
 
 
67
    ncols = db_get_table_number_of_columns(table);
 
68
    for (col = 0; col < ncols; col++)
 
69
        fprintf(stdout, "%s\n",
 
70
                db_get_column_name(db_get_table_column(table, col)));
 
71
 
 
72
    exit(EXIT_SUCCESS);
 
73
}
 
74
 
 
75
 
 
76
static void parse_command_line(int argc, char **argv)
 
77
{
 
78
    struct Option *driver, *database, *table;
 
79
    struct GModule *module;
 
80
    const char *drv, *db;
 
81
 
 
82
    /* Initialize the GIS calls */
 
83
    G_gisinit(argv[0]);
 
84
 
 
85
    table = G_define_standard_option(G_OPT_DB_TABLE);
 
86
    table->required = YES;
 
87
 
 
88
    driver = G_define_standard_option(G_OPT_DB_DRIVER);
 
89
    driver->options = db_list_drivers();
 
90
    if ((drv = db_get_default_driver_name()))
 
91
        driver->answer = (char *) drv;
 
92
 
 
93
    database = G_define_standard_option(G_OPT_DB_DATABASE);
 
94
    if ((db = db_get_default_database_name()))
 
95
        database->answer = (char *) db;
 
96
 
 
97
    /* Set description */
 
98
    module = G_define_module();
 
99
    G_add_keyword(_("database"));
 
100
    G_add_keyword(_("attribute table"));
 
101
    module->description = _("List all columns for a given table.");
 
102
 
 
103
    if (G_parser(argc, argv))
 
104
        exit(EXIT_FAILURE);
 
105
 
 
106
    parms.driver = driver->answer;
 
107
    parms.database = database->answer;
 
108
    parms.table = table->answer;
 
109
}