summaryrefslogtreecommitdiff
path: root/net/irrtoolset-nox11/patches/patch-cs
blob: 124c3efae908243055e0cba752ce96cb835ce572 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
$NetBSD: patch-cs,v 1.2 2008/03/08 11:00:35 spz Exp $

--- src/RtConfig/f_cisco.cc.orig	2007-01-23 01:45:16.000000000 +0100
+++ src/RtConfig/f_cisco.cc
@@ -746,39 +746,39 @@ void CiscoConfig::printRE(ostream &s, 
 
    //int lineLen = strlen(out.str());
    int lineLen = out.str().length();
+   const char *p = out.str().c_str();
+
    if (lineLen < 240 && ! hasTilda) {
-      const char *p = out.str().c_str();
       for (char *q = strchr(p, '@'); q; q = strchr(q, '@'))
 	 *q = '(';
-      s << out.str();
+      s << p;
    } else { // need to split into multiple lines
       if (hasTilda) {
-	 const char *p = out.str().c_str();
 	 for (char *q = strchr(p, '@'); q; q = strchr(q, '@'))
 	    *q = '(';
 	 for (char *q = strchr(p, '&'); q; q = strchr(q, '&'))
 	    *q = '@';
       }
 
-      char *p = strdup(out.str().c_str());
-      char *q, *r2;
+      char *q, *q2;
       char *r = NULL;
       int size = 0;
-      for (p = strchr(p, '@'); p; p = strchr(p, '@')) {
-	 q = strchr(p, ')');
-	 if (q - p > size) {
-	    r = p;
-	    size = q - p;
+      for (q = strchr(p, '@'); q; q = strchr(q, '@')) {
+	 q2 = strchr(q, ')');
+	 if (q2 - q > size) {
+	    r = q;
+	    size = q2 - q;
 	 }
-	 *p = '(';
-	 p = q;
+	 *q = '(';
+	 q = q2;
       }
       if (!r) {
 	 s << out.str();
 	 cerr << "Warning: ip as-path access-list is too long for cisco to handle" << endl;
       } else {
-	 int inc = hasTilda ? 1 : (240 - lineLen + size) >? 5;
-	 p = strdup(out.str().c_str());
+         char *r2;
+	 int inc = hasTilda ? 1 : 
+		( ( (240 - lineLen + size) > 5 ) ? (240 - lineLen + size) : 5 );
 	 q = strchr(r, ')') + 1;
 	 *r = 0;
 	 r++;