opkg: run pre-install check before listing upgradable packages to ensure all
[project/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