~ubuntu-branches/ubuntu/feisty/elinks/feisty-updates

« back to all changes in this revision

Viewing changes to src/dom/string.h

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2006-06-30 08:57:43 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20060630085743-l81fgbw9dehvl1ds
Tags: 0.11.1-1ubuntu1
* Merge to Debian unstable.
* Removed gnutls12 porting, this is upstream now.
* Only Ubuntu changes left:
  - Killed type-handling.
  - Add X-Ubuntu-Gettext-Domain to .desktop files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef EL_DOM_STRING_H
 
2
#define EL_DOM_STRING_H
 
3
 
 
4
#include "util/memory.h"
 
5
 
 
6
struct dom_string {
 
7
        size_t length;
 
8
        unsigned char *string;
 
9
};
 
10
 
 
11
#define INIT_DOM_STRING(strvalue, strlength) \
 
12
        { (strlength) == -1 ? sizeof(strvalue) - 1 : (strlength), (strvalue) }
 
13
 
 
14
static inline void
 
15
set_dom_string(struct dom_string *string, unsigned char *value, size_t length)
 
16
{
 
17
        string->string = value;
 
18
        string->length = length == -1 ? strlen(value) : length;
 
19
}
 
20
 
 
21
static inline int
 
22
dom_string_casecmp(const struct dom_string *string1, const struct dom_string *string2)
 
23
{
 
24
        size_t length = int_min(string1->length, string2->length);
 
25
        size_t string_diff = strncasecmp(string1->string, string2->string, length);
 
26
 
 
27
        /* If the lengths or strings don't match strncasecmp() does the
 
28
         * job else return which ever is bigger. */
 
29
        return string_diff ? string_diff : string1->length - string2->length;
 
30
}
 
31
 
 
32
static inline int
 
33
dom_string_ncasecmp(struct dom_string *string1, struct dom_string *string2, size_t length)
 
34
{
 
35
        return strncasecmp(string1->string, string2->string, length);
 
36
}
 
37
 
 
38
#define copy_dom_string(string1, string2) \
 
39
        set_dom_string(string1, (string2)->string, (string2)->length)
 
40
 
 
41
static inline struct dom_string *
 
42
init_dom_string(struct dom_string *string, unsigned char *str, size_t len)
 
43
{
 
44
        string->string = mem_alloc(len + 1);
 
45
        if (!string->string)
 
46
                return NULL;
 
47
 
 
48
        memcpy(string->string, str, len);
 
49
        string->string[len] = 0;
 
50
        string->length = len;
 
51
        return string;
 
52
}
 
53
 
 
54
#define is_dom_string_set(str) ((str)->string && (str)->length)
 
55
 
 
56
#define done_dom_string(str) mem_free((str)->string);
 
57
 
 
58
#define isquote(c)      ((c) == '"' || (c) == '\'')
 
59
 
 
60
#endif