tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
0
fork
atom
lol
0
fork
atom
overview
issues
pulls
pipelines
netbsd.locale: init
Matthew Bauer
7 years ago
d64b8598
1705428c
+92
2 changed files
expand all
collapse all
unified
split
pkgs
os-specific
bsd
netbsd
default.nix
locale.patch
+7
pkgs/os-specific/bsd/netbsd/default.nix
reviewed
···
600
600
makeFlags = [ "BINDIR=/share" ];
601
601
};
602
602
603
603
+
locale = netBSDDerivation {
604
604
+
path = "usr.bin/locale";
605
605
+
version = "7.1.2";
606
606
+
sha256 = "0kk6v9k2bygq0wf9gbinliqzqpzs9bgxn0ndyl2wcv3hh2bmsr9p";
607
607
+
patches = [ ./locale.patch ];
608
608
+
};
609
609
+
603
610
}
+85
pkgs/os-specific/bsd/netbsd/locale.patch
reviewed
···
1
1
+
--- a/locale.c 2018-06-11 14:39:06.449762000 -0400
2
2
+
+++ b/locale.c 2018-06-11 14:42:28.461122899 -0400
3
3
+
@@ -56,14 +56,8 @@
4
4
+
#include <stringlist.h>
5
5
+
#include <unistd.h>
6
6
+
7
7
+
-#include "citrus_namespace.h"
8
8
+
-#include "citrus_region.h"
9
9
+
-#include "citrus_lookup.h"
10
10
+
-#include "setlocale_local.h"
11
11
+
-
12
12
+
/* Local prototypes */
13
13
+
void init_locales_list(void);
14
14
+
-void init_locales_list_alias(void);
15
15
+
void list_charmaps(void);
16
16
+
void list_locales(void);
17
17
+
const char *lookup_localecat(int);
18
18
+
@@ -221,6 +215,8 @@
19
19
+
};
20
20
+
#define NKWINFO (sizeof(kwinfo)/sizeof(kwinfo[0]))
21
21
+
22
22
+
+const char *_PathLocale = NULL;
23
23
+
+
24
24
+
int
25
25
+
main(int argc, char *argv[])
26
26
+
{
27
27
+
@@ -411,8 +407,7 @@
28
28
+
while ((dp = readdir(dirp)) != NULL) {
29
29
+
/* exclude "." and "..", _LOCALE_ALIAS_NAME */
30
30
+
if ((dp->d_name[0] != '.' || (dp->d_name[1] != '\0' &&
31
31
+
- (dp->d_name[1] != '.' || dp->d_name[2] != '\0'))) &&
32
32
+
- strcmp(_LOCALE_ALIAS_NAME, dp->d_name) != 0) {
33
33
+
+ (dp->d_name[1] != '.' || dp->d_name[2] != '\0')))) {
34
34
+
s = strdup(dp->d_name);
35
35
+
if (s == NULL)
36
36
+
err(1, "could not allocate memory");
37
37
+
@@ -431,48 +426,10 @@
38
38
+
if (sl_find(locales, "C") == NULL)
39
39
+
sl_add(locales, "C");
40
40
+
41
41
+
- init_locales_list_alias();
42
42
+
-
43
43
+
/* make output nicer, sort the list */
44
44
+
qsort(locales->sl_str, locales->sl_cur, sizeof(char *), scmp);
45
45
+
}
46
46
+
47
47
+
-void
48
48
+
-init_locales_list_alias(void)
49
49
+
-{
50
50
+
- char aliaspath[PATH_MAX];
51
51
+
- struct _lookup *hlookup;
52
52
+
- struct _region key, dat;
53
53
+
- size_t n;
54
54
+
- char *s, *t;
55
55
+
-
56
56
+
- _DIAGASSERT(locales != NULL);
57
57
+
- _DIAGASSERT(_PathLocale != NULL);
58
58
+
-
59
59
+
- (void)snprintf(aliaspath, sizeof(aliaspath),
60
60
+
- "%s/" _LOCALE_ALIAS_NAME, _PathLocale);
61
61
+
-
62
62
+
- if (_lookup_seq_open(&hlookup, aliaspath,
63
63
+
- _LOOKUP_CASE_SENSITIVE) == 0) {
64
64
+
- while (_lookup_seq_next(hlookup, &key, &dat) == 0) {
65
65
+
- n = _region_size((const struct _region *)&key);
66
66
+
- s = _region_head((const struct _region *)&key);
67
67
+
- for (t = s; n > 0 && *s!= '/'; --n, ++s);
68
68
+
- n = (size_t)(s - t);
69
69
+
- s = malloc(n + 1);
70
70
+
- if (s == NULL)
71
71
+
- err(1, "could not allocate memory");
72
72
+
- memcpy(s, t, n);
73
73
+
- s[n] = '\0';
74
74
+
- if (sl_find(locales, s) == NULL)
75
75
+
- sl_add(locales, s);
76
76
+
- else
77
77
+
- free(s);
78
78
+
- }
79
79
+
- _lookup_seq_close(hlookup);
80
80
+
- }
81
81
+
-}
82
82
+
-
83
83
+
/*
84
84
+
* Show current locale status, depending on environment variables
85
85
+
*/