summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Fankhauser hiddenalpha.ch2024-04-24 21:33:01 +0200
committerAndreas Fankhauser hiddenalpha.ch2024-04-24 21:33:01 +0200
commit37af455dff71ab08070e48f6a848e326a52902ca (patch)
tree6765a00fb4fa924b1985f4f2988f1b21cbeb367a
parente17b8876cfafae081784d5cf1258ce16c50e283a (diff)
downloadUnspecifiedGarbage-37af455dff71ab08070e48f6a848e326a52902ca.zip
UnspecifiedGarbage-37af455dff71ab08070e48f6a848e326a52902ca.tar.gz
Add a standalone container_of impl. Fix assert_is template.
-rw-r--r--doc/note/qemu/qemu.txt2
-rw-r--r--src/main/c/common/assert_is.h4
-rw-r--r--src/main/c/common/offset_of.h9
3 files changed, 12 insertions, 3 deletions
diff --git a/doc/note/qemu/qemu.txt b/doc/note/qemu/qemu.txt
index 5ee13b2..395d11d 100644
--- a/doc/note/qemu/qemu.txt
+++ b/doc/note/qemu/qemu.txt
@@ -245,7 +245,7 @@ NOTE: Couldn't yet test any of those commands.
&& apk add openssh-server \
&& rc-update add sshd \
&& sed -i -E 's;^# *(PermitRootLogin).+$;\1 yes;' /etc/ssh/sshd_config \
- && sed -i -E 's;^# *(http://dl-cdn.alpinelinux.org/alpine/v[^/]+/community)$;\1;' /etc/apk/repositories \
+ && sed -i -E 's;^# *(http://dl-cdn.alpinelinux.org/alpine/v.*?/community)$;\1;' /etc/apk/repositories \
&& mkdir /home/user && chown 1000:1000 /home/user && chmod 755 /home/user \
&& printf 'user:x:1000:1000:user:/home/user:/bin/ash\n' >> /etc/passwd \
&& printf 'user:x:1000:user\n' >> /etc/group \
diff --git a/src/main/c/common/assert_is.h b/src/main/c/common/assert_is.h
index b6e3132..316bf02 100644
--- a/src/main/c/common/assert_is.h
+++ b/src/main/c/common/assert_is.h
@@ -2,7 +2,7 @@
#if !NDEBUG
#define TPL_assert_is(T, PRED) static inline T*assert_is_##T(void*p,\
const char*f,int l){if(p==NULL){fprintf(stderr,"assert(" STR_QUOT(T)\
-" != NULL) %s:%d\n",f,l);abort();}T*obj=p;if(!PRED){fprintf(stderr,\
+" != NULL) %s:%d\n",f,l);abort();}T*obj=p;if(!(PRED)){fprintf(stderr,\
"ssert(type is \""STR_QUOT(T)"\") %s:%d\n",f,l);abort();}return p; }
#else
#define TPL_assert_is(T, PRED) static inline T*assert_is_##T(void*p,\
@@ -20,7 +20,7 @@ struct Person {
};
/* instantiate a checker */
-TPL_assert_is(Person, !strcmp(obj->tYPE, "Hi, I'm a Person"));
+TPL_assert_is(Person, !strcmp(obj->tYPE, "Hi, I'm a Person"))
#define assert_is_Person(p) assert_is_Person(p, __FILE__, __LINE__)
/* make sure magic is initialized (ALSO MAKE SURE TO PROPERLY INVALIDATE
diff --git a/src/main/c/common/offset_of.h b/src/main/c/common/offset_of.h
new file mode 100644
index 0000000..7d9179d
--- /dev/null
+++ b/src/main/c/common/offset_of.h
@@ -0,0 +1,9 @@
+#ifndef INCGUARD_yisgKqALPG4lfEqb
+#define INCGUARD_yisgKqALPG4lfEqb
+
+
+#define container_of(P, T, M) \
+ ((T*)( ((size_t)P) - ((size_t)((char*)&((T*)0)->M - (char*)0) )))
+
+
+#endif /* INCGUARD_yisgKqALPG4lfEqb */