opkg: improve opkg_install error reporting and include a check to verify repository...
[oweals/opkg-lede.git] / libopkg / str_util.c
1 /* str_utils.c - the opkg package management system
2
3    Carl D. Worth
4
5    Copyright (C) 2001 University of Southern California
6
7    This program is free software; you can redistribute it and/or
8    modify it under the terms of the GNU General Public License as
9    published by the Free Software Foundation; either version 2, or (at
10    your option) any later version.
11
12    This program is distributed in the hope that it will be useful, but
13    WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    General Public License for more details.
16 */
17
18 #include "includes.h"
19
20 int str_starts_with(const char *str, const char *prefix)
21 {
22     return (strncmp(str, prefix, strlen(prefix)) == 0);
23 }
24
25 int str_ends_with(const char *str, const char *suffix)
26 {
27     int suffix_len;
28     int str_len;
29
30     str_len = strlen(str);
31     suffix_len = strlen(suffix);
32
33     if (str_len < suffix_len) {
34         return 0;
35     }
36
37     return (strcmp(str + str_len - suffix_len, suffix) == 0);
38 }
39
40 int str_chomp(char *str)
41 {
42     if (str[strlen(str) - 1] == '\n') {
43         str[strlen(str) - 1] = '\0';
44         return 1;
45     }
46     return 0;
47 }
48
49 int str_tolower(char *str)
50 {
51     while (*str) {
52         *str = tolower(*str);
53         str++;
54     }
55
56     return 0;
57 }
58
59 int str_toupper(char *str)
60 {
61     while (*str) {
62         *str = toupper(*str);
63         str++;
64     }
65
66     return 0;
67 }
68
69 char *str_dup_safe(const char *str)
70 {
71     return str ? strdup(str) : NULL;
72 }
73