~ubuntu-branches/ubuntu/trusty/gigolo/trusty

« back to all changes in this revision

Viewing changes to src/bookmark.c

  • Committer: Package Import Robot
  • Author(s): Yves-Alexis Perez, Evgeni Golov, Jackson Doak, Yves-Alexis Perez
  • Date: 2014-01-09 23:00:45 UTC
  • mfrom: (2.1.6)
  • Revision ID: package-import@ubuntu.com-20140109230045-1qdtpu8lybe2owib
Tags: 0.4.2-1
[ Evgeni Golov ]
* Correct Vcs-* URLs to point to anonscm.debian.org

[ Jackson Doak ]
* New upstream release
  - Drop waf support, we no longer need to repack
  - Never make the Connect button insensitive. LP: #1131156
* debian/control:
  - Bump debhelper to 9
  - Drop hardening-includes, no longer needed
  - Bump standards-version to 3.9.5
* debian/rules: 
  - Switch from hardening includes to debhelper 9 hardening
  - Add --disable-silent-rules to configure
* debian/compat: Bump to 9

[ Yves-Alexis Perez ]
* debian/rules:
  - stop calling autogen.sh before configure.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
2
 *      bookmark.c
3
3
 *
4
 
 *      Copyright 2008-2010 Enrico Tröger <enrico(at)xfce(dot)org>
 
4
 *      Copyright 2008-2011 Enrico Tröger <enrico(at)xfce(dot)org>
5
5
 *
6
6
 *      This program is free software; you can redistribute it and/or modify
7
7
 *      it under the terms of the GNU General Public License as published by
43
43
        gchar   *share;
44
44
        guint    port;
45
45
        gchar   *user;
 
46
        gchar   *color;
46
47
        gboolean autoconnect;
47
48
        gboolean should_not_autoconnect;
48
49
 
54
55
G_DEFINE_TYPE(GigoloBookmark, gigolo_bookmark, G_TYPE_OBJECT);
55
56
 
56
57
 
57
 
void gigolo_bookmark_bookmark_clear(GigoloBookmark *bookmark)
 
58
void gigolo_bookmark_clear(GigoloBookmark *bookmark)
58
59
{
59
60
        GigoloBookmarkPrivate *priv = GIGOLO_BOOKMARK_GET_PRIVATE(bookmark);
60
61
 
95
96
 
96
97
static void gigolo_bookmark_finalize(GObject *object)
97
98
{
98
 
        gigolo_bookmark_bookmark_clear(GIGOLO_BOOKMARK(object));
 
99
        gigolo_bookmark_clear(GIGOLO_BOOKMARK(object));
99
100
 
100
101
        G_OBJECT_CLASS(gigolo_bookmark_parent_class)->finalize(object);
101
102
}
105
106
{
106
107
        gchar *s, *t, *x, *end, *tmp;
107
108
        guint l;
 
109
        gboolean is_uri_dav;
108
110
        GigoloBookmarkPrivate *priv = GIGOLO_BOOKMARK_GET_PRIVATE(bookmark);
109
111
 
110
112
        priv->scheme = g_uri_parse_scheme(uri);
112
114
        s = strstr(uri, "://");
113
115
        if (priv->scheme == NULL || s == NULL)
114
116
        {
115
 
                verbose("Error parsing URI '%s' while reading URI scheme", uri);
116
 
                gigolo_bookmark_bookmark_clear(bookmark);
 
117
                verbose("Error parsing URI '%s' at reading URI scheme", uri);
 
118
                gigolo_bookmark_clear(bookmark);
117
119
                return FALSE;
118
120
        }
119
121
        s += 3;
140
142
                }
141
143
                if (l == 0)
142
144
                {
143
 
                        verbose("Error parsing URI '%s' while reading username", uri);
144
 
                        gigolo_bookmark_bookmark_clear(bookmark);
 
145
                        verbose("Error parsing URI '%s' at reading username", uri);
 
146
                        gigolo_bookmark_clear(bookmark);
145
147
                        return FALSE;
146
148
                }
147
149
                tmp = g_strndup(s, l);
169
171
                if (! hostend || hostend > end)
170
172
                {
171
173
                        verbose("Error parsing URI '%s', missing ']'", uri);
172
 
                        gigolo_bookmark_bookmark_clear(bookmark);
 
174
                        gigolo_bookmark_clear(bookmark);
173
175
                        return FALSE;
174
176
                }
175
177
                l = 0;
214
216
                priv->port = (guint) atoi(tmp);
215
217
                g_free(tmp);
216
218
        }
217
 
        /* TODO handle WebDav path parts */
218
219
        if (NZV(end) && *end == '/' && gigolo_str_equal("smb", priv->scheme))
219
220
        {
220
221
                end++; /* skip the slash */
228
229
                }
229
230
                priv->share = g_strndup(end, l);
230
231
        }
 
232
        is_uri_dav = gigolo_str_equal("dav", priv->scheme) || gigolo_str_equal("davs", priv->scheme);
 
233
        if (NZV(end) && *end == '/' && is_uri_dav)
 
234
        {
 
235
                end++; /* skip the slash */
 
236
 
 
237
                /* remove trailing slashes */
 
238
                l = strlen(end);
 
239
                while (*end != '\0' && end[l-1] == '/')
 
240
                {
 
241
                        l--;
 
242
                }
 
243
                if (l > 0)
 
244
                        priv->path = g_strndup(end, l);
 
245
        }
231
246
 
232
247
        return TRUE;
233
248
}
235
250
 
236
251
static void gigolo_bookmark_init(GigoloBookmark *self)
237
252
{
238
 
        gigolo_bookmark_bookmark_clear(self);
 
253
        gigolo_bookmark_clear(self);
239
254
}
240
255
 
241
256
 
271
286
        priv_src = GIGOLO_BOOKMARK_GET_PRIVATE(src);
272
287
 
273
288
        /* free existing strings and data */
274
 
        gigolo_bookmark_bookmark_clear(dst);
 
289
        gigolo_bookmark_clear(dst);
275
290
 
276
291
        /* copy from src to dst */
277
292
        priv_dst->name = g_strdup(priv_src->name);
309
324
 
310
325
        domain = gigolo_bookmark_get_domain(bookmark);
311
326
 
312
 
        result = g_strdup_printf("%s://%s%s%s%s%s%s/%s%s%s%s",
 
327
        result = g_strdup_printf("%s://%s%s%s%s%s%s/%s%s%s",
313
328
                priv->scheme,
314
329
                (NZV(domain)) ? domain : "",
315
330
                (NZV(domain)) ? ";" : "",
318
333
                priv->host,
319
334
                (port) ? port : "",
320
335
                (NZV(priv->path)) ? priv->path : "",
321
 
                (NZV(priv->path)) ? "/" : "",
322
336
                (NZV(priv->share)) ? priv->share : "",
323
337
                (NZV(priv->share)) ? "/" : "");
324
338
 
353
367
        tmp = gigolo_bookmark_new_from_uri(priv->name, uri);
354
368
        if (gigolo_bookmark_is_valid(tmp))
355
369
                gigolo_bookmark_clone(bookmark, tmp);
 
370
 
 
371
        g_object_unref(tmp);
356
372
}
357
373
 
358
374
 
440
456
 
441
457
        folder = GIGOLO_BOOKMARK_GET_PRIVATE(bookmark)->folder;
442
458
        username = gigolo_bookmark_get_user(bookmark);
443
 
        if (NZV(folder) && username && folder[0] == '~')
 
459
        if (NZV(folder) && folder[0] == '~')
 
460
        {
 
461
                if (! username)
 
462
                        username = g_get_user_name();
444
463
                result = g_strconcat("/home/", username, folder + 1, NULL);
 
464
        }
445
465
        else
446
466
                result = g_strdup(folder);
447
467
 
629
649
}
630
650
 
631
651
 
 
652
const gchar *gigolo_bookmark_get_color(GigoloBookmark *bookmark)
 
653
{
 
654
        g_return_val_if_fail(bookmark != NULL, NULL);
 
655
 
 
656
        return GIGOLO_BOOKMARK_GET_PRIVATE(bookmark)->color;
 
657
}
 
658
 
 
659
 
 
660
void gigolo_bookmark_set_color(GigoloBookmark *bookmark, const gchar *color)
 
661
{
 
662
        GigoloBookmarkPrivate *priv;
 
663
 
 
664
        g_return_if_fail(bookmark != NULL);
 
665
        g_return_if_fail(color != NULL);
 
666
 
 
667
        priv = GIGOLO_BOOKMARK_GET_PRIVATE(bookmark);
 
668
 
 
669
        g_free(priv->color);
 
670
        priv->color = g_strdup(color);
 
671
}
 
672
 
 
673
 
632
674
gboolean gigolo_bookmark_is_valid(GigoloBookmark *bookmark)
633
675
{
634
676
        GigoloBookmarkPrivate *priv;