Introduction
Introduction Statistics Contact Development Disclaimer Help
util.c - ledit - Text editor (WIP)
git clone git://lumidify.org/ledit.git (fast, but not encrypted)
git clone https://lumidify.org/ledit.git (encrypted, but very slow)
git clone git://4kcetb7mo7hj6grozzybxtotsub5bempzo4lirzc3437amof2c2impyd.onion/…
Log
Files
Refs
README
LICENSE
---
util.c (1119B)
---
1 #include <string.h>
2 #include <stddef.h>
3 #include "memory.h"
4
5 char *
6 next_utf8(char *str) {
7 while ((*str & 0xC0) == 0x80)
8 str++;
9 return str;
10 }
11
12 size_t
13 next_utf8_len(char *str, size_t len) {
14 size_t cur = 0;
15 while (cur < len && (str[cur] & 0xC0) == 0x80)
16 cur++;
17 return cur;
18 }
19
20 /* FIXME: change these to macros somehow */
21 size_t
22 add_sz(size_t a, size_t b) {
23 if (a > SIZE_MAX - b)
24 err_overflow();
25 return a + b;
26 }
27
28 size_t
29 add_sz3(size_t a, size_t b, size_t c) {
30 if (b > SIZE_MAX - c || a > SIZE_MAX - (b + c))
31 err_overflow();
32 return a + b + c;
33 }
34
35 void
36 swap_sz(size_t *a, size_t *b) {
37 size_t tmp = *a;
38 *a = *b;
39 *b = tmp;
40 }
41
42 void
43 sort_range(size_t *l1, size_t *b1, size_t *l2, size_t *b2) {
44 if (*l1 == *l2 && *b1 > *b2) {
45 swap_sz(b1, b2);
46 } else if (*l1 > *l2) {
47 swap_sz(l1, l2);
48 swap_sz(b1, b2);
49 }
50 }
51
52 int
53 str_array_equal(const char *terminated, const char *array, size_t len) {
54 if (!strncmp(terminated, array, len)) {
55 /* this is kind of inefficient, but there's no way to kn…
56 otherwise if strncmp just stopped comparing after a '…
57 return strlen(terminated) == len;
58 }
59 return 0;
60 }
You are viewing proxied material from lumidify.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.