commit ed97324

default  ·  2024-05-21 17:08:33 +0000 UTC
parent cdfaf6d
Another approach to disabling SHM.
1 files changed,  +23, -23
+23, -23
 1@@ -653,29 +653,6 @@ void term_handler(int s)
 2 }
 3 
 4 
 5-#ifdef WITHOUT_SHM
 6-
 7-/* dummy versions */
 8-
 9-int shm_open(const char *name, int flags, mode_t mode)
10-{
11-    (void)name;
12-    (void)flags;
13-    (void)mode;
14-
15-    errno = ENOTSUP;
16-    return -1;
17-}
18-
19-int shm_unlink(const char *name)
20-{
21-    (void)name;
22-    return -1;
23-}
24-
25-
26-#endif
27-
28 srv_state *srv_state_op(xs_str **fname, int op)
29 /* opens or deletes the shared memory object */
30 {
31@@ -687,6 +664,13 @@ srv_state *srv_state_op(xs_str **fname, int op)
32 
33     switch (op) {
34     case 0: /* open for writing */
35+
36+#ifdef WITHOUT_SHM
37+
38+        errno = ENOTSUP;
39+
40+#else
41+
42         if ((fd = shm_open(*fname, O_CREAT | O_RDWR, 0666)) != -1) {
43             ftruncate(fd, sizeof(*ss));
44 
45@@ -697,6 +681,8 @@ srv_state *srv_state_op(xs_str **fname, int op)
46             close(fd);
47         }
48 
49+#endif
50+
51         if (ss == NULL) {
52             /* shared memory error: just create a plain structure */
53             srv_log(xs_fmt("warning: shm object error (%s)", strerror(errno)));
54@@ -710,6 +696,13 @@ srv_state *srv_state_op(xs_str **fname, int op)
55         break;
56 
57     case 1: /* open for reading */
58+
59+#ifdef WITHOUT_SHM
60+
61+        errno = ENOTSUP;
62+
63+#else
64+
65         if ((fd = shm_open(*fname, O_RDONLY, 0666)) != -1) {
66             if ((ss = mmap(0, sizeof(*ss), PROT_READ, MAP_SHARED, fd, 0)) == MAP_FAILED)
67                 ss = NULL;
68@@ -717,6 +710,8 @@ srv_state *srv_state_op(xs_str **fname, int op)
69             close(fd);
70         }
71 
72+#endif
73+
74         if (ss == NULL) {
75             /* shared memory error */
76             srv_log(xs_fmt("error: shm object error (%s) server not running?", strerror(errno)));
77@@ -734,9 +729,14 @@ srv_state *srv_state_op(xs_str **fname, int op)
78         break;
79 
80     case 2: /* unlink */
81+
82+#ifndef WITHOUT_SHM
83+
84         if (*fname)
85             shm_unlink(*fname);
86 
87+#endif
88+
89         break;
90     }
91