#include <stdio.h>
#include <stdint.h>
struct _blablabla_private {
char *whatever1;
size_t whatever2;
size_t whatever3;
size_t whatever4;
char *whatever5;
int *whatever6;
};
struct blablabla {
char data_[sizeof(struct _blablabla_private)];
};
void lib_func_set(struct blablabla* bla) {
struct _blablabla_private *priv = (struct _blablabla_private *)bla->data_;
priv->whatever1 = "it works";
}
void lib_func_get(const struct blablabla* bla) {
struct _blablabla_private *priv = (struct _blablabla_private *)bla->data_;
printf("%s\n", priv
->whatever1
); }
int main(void) {
struct blablabla b;
lib_func_set(&b);
lib_func_get(&b);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCnN0cnVjdCBfYmxhYmxhYmxhX3ByaXZhdGUgewogICAgY2hhciAqd2hhdGV2ZXIxOwogICAgc2l6ZV90IHdoYXRldmVyMjsKICAgIHNpemVfdCB3aGF0ZXZlcjM7CiAgICBzaXplX3Qgd2hhdGV2ZXI0OwogICAgY2hhciAqd2hhdGV2ZXI1OwogICAgaW50ICp3aGF0ZXZlcjY7IAp9OwoKc3RydWN0IGJsYWJsYWJsYSB7CiAgIGNoYXIgZGF0YV9bc2l6ZW9mKHN0cnVjdCBfYmxhYmxhYmxhX3ByaXZhdGUpXTsKfTsKCnZvaWQgbGliX2Z1bmNfc2V0KHN0cnVjdCBibGFibGFibGEqIGJsYSkgewoJc3RydWN0IF9ibGFibGFibGFfcHJpdmF0ZSAqcHJpdiA9IChzdHJ1Y3QgX2JsYWJsYWJsYV9wcml2YXRlICopYmxhLT5kYXRhXzsKCXByaXYtPndoYXRldmVyMSA9ICJpdCB3b3JrcyI7Cn0KCnZvaWQgbGliX2Z1bmNfZ2V0KGNvbnN0IHN0cnVjdCBibGFibGFibGEqIGJsYSkgewoJc3RydWN0IF9ibGFibGFibGFfcHJpdmF0ZSAqcHJpdiA9IChzdHJ1Y3QgX2JsYWJsYWJsYV9wcml2YXRlICopYmxhLT5kYXRhXzsKCXByaW50ZigiJXNcbiIsIHByaXYtPndoYXRldmVyMSk7Cn0KCmludCBtYWluKHZvaWQpIHsKCXN0cnVjdCBibGFibGFibGEgYjsKCQoJbGliX2Z1bmNfc2V0KCZiKTsKCWxpYl9mdW5jX2dldCgmYik7CgoJcmV0dXJuIDA7Cn0K