udhcp: code shrink
authorDenys Vlasenko <vda.linux@googlemail.com>
Fri, 17 May 2013 13:19:47 +0000 (15:19 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 17 May 2013 13:19:47 +0000 (15:19 +0200)
function                                             old     new   delta
attach_option                                        416     413      -3
allocate_tempopt_if_needed                            74       -     -74

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/udhcp/common.c

index 9c27cd0..11b7b1f 100644 (file)
@@ -371,20 +371,23 @@ static NOINLINE void attach_option(
                char *buffer,
                int length)
 {
-       struct option_set *existing, *new, **curr;
-       char *allocated = NULL;
+       struct option_set *existing;
+       char *allocated;
 
-       existing = udhcp_find_option(*opt_list, optflag->code);
-       if (!existing) {
-               log2("Attaching option %02x to list", optflag->code);
-               allocated = allocate_tempopt_if_needed(optflag, buffer, &length);
+       allocated = allocate_tempopt_if_needed(optflag, buffer, &length);
 #if ENABLE_FEATURE_UDHCP_RFC3397
-               if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_DNS_STRING) {
-                       /* reuse buffer and length for RFC1035-formatted string */
-                       allocated = buffer = (char *)dname_enc(NULL, 0, buffer, &length);
-               }
+       if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_DNS_STRING) {
+               /* reuse buffer and length for RFC1035-formatted string */
+               allocated = buffer = (char *)dname_enc(NULL, 0, buffer, &length);
+       }
 #endif
+
+       existing = udhcp_find_option(*opt_list, optflag->code);
+       if (!existing) {
+               struct option_set *new, **curr;
+
                /* make a new option */
+               log2("Attaching option %02x to list", optflag->code);
                new = xmalloc(sizeof(*new));
                new->data = xmalloc(length + OPT_DATA);
                new->data[OPT_CODE] = optflag->code;
@@ -405,14 +408,7 @@ static NOINLINE void attach_option(
 
                /* add it to an existing option */
                log2("Attaching option %02x to existing member of list", optflag->code);
-               allocated = allocate_tempopt_if_needed(optflag, buffer, &length);
                old_len = existing->data[OPT_LEN];
-#if ENABLE_FEATURE_UDHCP_RFC3397
-               if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_DNS_STRING) {
-                       /* reuse buffer and length for RFC1035-formatted string */
-                       allocated = buffer = (char *)dname_enc(existing->data + OPT_DATA, old_len, buffer, &length);
-               }
-#endif
                if (old_len + length < 255) {
                        /* actually 255 is ok too, but adding a space can overlow it */