[DRBD-cvs] user by lars; back to single linked list, but keep FIF...
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Mon, 5 Apr 2004 13:47:06 +0200 (CEST)
DRBD CVS committal
Author : lars
Project : drbd
Module : user
Dir : drbd/user
Modified Files:
Tag: rel-0_7-branch
Makefile drbdadm.h drbdadm_main.c drbdadm_parser.y
Log Message:
back to single linked list, but keep FIFO order for options
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/user/Makefile,v
retrieving revision 1.7.2.14
retrieving revision 1.7.2.15
diff -u -3 -r1.7.2.14 -r1.7.2.15
--- Makefile 24 Mar 2004 13:14:07 -0000 1.7.2.14
+++ Makefile 5 Apr 2004 11:47:01 -0000 1.7.2.15
@@ -35,6 +35,8 @@
drbdadm_parser.c: drbdadm_parser.y
bison -d -o drbdadm_parser.c drbdadm_parser.y
+drbdadm_parser.y: drbdadm.h
+
drbdsetup: drbdsetup.o
$(CC) -o drbdsetup drbdsetup.o
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/user/Attic/drbdadm.h,v
retrieving revision 1.1.2.19
retrieving revision 1.1.2.20
diff -u -3 -r1.1.2.19 -r1.1.2.20
--- drbdadm.h 1 Apr 2004 07:25:28 -0000 1.1.2.19
+++ drbdadm.h 5 Apr 2004 11:47:01 -0000 1.1.2.20
@@ -40,7 +40,6 @@
struct d_option* sync_options;
struct d_option* startup_options;
struct d_resource* next;
- struct d_resource* prev;
};
extern int adm_attach(struct d_resource* ,char* );
@@ -79,9 +78,10 @@
#define ssprintf(ptr,...) \
ptr=strcpy(alloca(snprintf(ss_buffer,255,##__VA_ARGS__)+1),ss_buffer)
-#define for_each_resource(res,tmp,config) \
- for (res = (config), tmp = 0; \
- ({ tmp != (config) && (tmp = res->next); }); \
+/* CAUTION: arguments may not have side effects! */
+#define for_each_resource(res,tmp,config) \
+ for (res = (config), tmp = 0; \
+ tmp = res? res->next : NULL, res != NULL;\
res = tmp)
#endif
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/user/Attic/drbdadm_main.c,v
retrieving revision 1.1.2.40
retrieving revision 1.1.2.41
diff -u -3 -r1.1.2.40 -r1.1.2.41
--- drbdadm_main.c 3 Apr 2004 11:16:08 -0000 1.1.2.40
+++ drbdadm_main.c 5 Apr 2004 11:47:01 -0000 1.1.2.41
@@ -684,7 +684,7 @@
{ // check uniqueness of resource names.
struct d_resource *res2,*tmp2;
char *name;
-
+
for_each_resource(res,tmp,config) {
name = res->name;
for_each_resource(res2,tmp2,config) {
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/user/Attic/drbdadm_parser.y,v
retrieving revision 1.1.2.20
retrieving revision 1.1.2.21
diff -u -3 -r1.1.2.20 -r1.1.2.21
--- drbdadm_parser.y 11 Feb 2004 13:25:20 -0000 1.1.2.20
+++ drbdadm_parser.y 5 Apr 2004 11:47:01 -0000 1.1.2.21
@@ -10,7 +10,18 @@
extern void yyerror(char* text);
extern int yylex();
-#define APPEND(LIST,ITEM) (ITEM); ((ITEM)->next=(LIST))
+#define APPEND(LIST,ITEM) ({ \
+ typeof((LIST)) _l = (LIST); \
+ typeof((ITEM)) _i = (ITEM); \
+ typeof((ITEM)) _t; \
+ _i->next = NULL; \
+ if (_l == NULL) { _l = _i; } \
+ else { \
+ for (_t = _l; _t->next; _t = _t->next); \
+ _t->next = _i; \
+ }; \
+ _l; \
+})
static struct d_resource* c_res;
static struct d_host_info* c_host;
@@ -77,7 +88,7 @@
struct d_resource* res;
res=calloc(1,sizeof(struct d_resource));
res->name=name;
- res->next = res->prev = res;
+ res->next = NULL;
return res;
}
@@ -127,16 +138,7 @@
;
resources: /* empty */ { $$ = 0; }
- | resources resource {
- if($1) {
- $2->next = $1;
- $2->prev = $1->prev;
- $1->prev->next = $2;
- $1->prev = $2;
- $$ = $1;
- } else
- $$ = $2;
- }
+ | resources resource { $$=APPEND($1,$2); }
;
resource: TK_RESOURCE TK_STRING { c_res = new_resource($2); }