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

« back to all changes in this revision

Viewing changes to vector/v.in.dxf/write_vect.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:
11
11
static dbString sql, str;
12
12
static char buf[1000];
13
13
 
14
 
void write_vect(struct Map_info *Map, char *layer, char *entity, char *label,
15
 
                int arr_size, int type)
 
14
void write_vect(struct Map_info *Map, char *layer, char *entity, char *handle,
 
15
                char *label, int arr_size, int type)
16
16
{
17
17
    struct line_cats *Cats;
18
18
    int i, field, cat;
30
30
        sprintf(buf, "insert into %s (%s"
31
31
                ", layer"
32
32
                ", entity"
 
33
                ", handle"
33
34
                ", label" ") values (%d, '", Fi[i]->table, Fi[i]->key, cat);
34
35
 
35
36
        if (layer) {
46
47
        }
47
48
        strcat(buf, "', '");
48
49
 
 
50
        if (handle) {
 
51
            if (strlen(handle) > 16) {
 
52
                G_warning(_("Entity handle truncated to 16 characters."));
 
53
                handle[16] = 0;
 
54
            }
 
55
            db_set_string(&str, handle);
 
56
            db_double_quote_string(&str);
 
57
            strcat(buf, db_get_string(&str));
 
58
        }
 
59
        strcat(buf, "', '");
 
60
 
49
61
        if (label) {
50
62
            db_set_string(&str, label);
51
63
            db_double_quote_string(&str);
55
67
 
56
68
        db_set_string(&sql, buf);
57
69
        if (db_execute_immediate(driver, &sql) != DB_OK)
58
 
            G_fatal_error(_("Unable to insert new record: %s"), db_get_string(&sql));
 
70
            G_fatal_error(_("Unable to insert new record: %s"),
 
71
                          db_get_string(&sql));
59
72
        db_free_string(&sql);
60
73
    }
61
74
    else
135
148
        x = field_name[0];
136
149
    G_str_to_sql(field_name);
137
150
    if (x)
138
 
        field_name[0] = x;
 
151
        field_name[0] = x;
139
152
 
140
153
    for (i = 0; i < num_fields; i++) {
141
154
        /* field name already exists */
198
211
            G_fatal_error(_("Unable to open database <%s> by driver <%s>"),
199
212
                          Vect_subst_var(Fi[i]->database, Map),
200
213
                          Fi[i]->driver);
 
214
        db_set_error_handler_driver(driver);
201
215
 
202
216
        db_begin_transaction(driver);
203
217
 
210
224
    sprintf(buf, "create table %s (cat integer"
211
225
            ", layer varchar(%d)"
212
226
            ", entity varchar(%d)"
 
227
            ", handle varchar(16)"
213
228
            ", label varchar(%d)"
214
229
            ")", Fi[i]->table, DXF_BUF_SIZE, DXF_BUF_SIZE, DXF_BUF_SIZE);
215
230
    db_set_string(&sql, buf);
220
235
 
221
236
    if (db_grant_on_table
222
237
        (driver, Fi[i]->table, DB_PRIV_SELECT, DB_GROUP | DB_PUBLIC) != DB_OK)
223
 
        G_fatal_error(_("Unable to grant privileges on table <%s>"), Fi[i]->table);
 
238
        G_fatal_error(_("Unable to grant privileges on table <%s>"),
 
239
                      Fi[i]->table);
224
240
    if (db_create_index2(driver, Fi[i]->table, Fi[i]->key) != DB_OK)
225
241
        G_warning(_("Unable to create index for table <%s>, key <%s>"),
226
242
                  Fi[i]->table, Fi[i]->key);
227
243
 
228
 
    if (Vect_map_add_dblink(Map, *field, field_name, Fi[i]->table, "cat",
 
244
    if (Vect_map_add_dblink(Map, *field, field_name, Fi[i]->table, GV_KEY_COLUMN,
229
245
                            Fi[i]->database, Fi[i]->driver))
230
246
        G_warning(_("Unable to add database link for vector map <%s>"),
231
247
                  Vect_get_full_name(Map));