Fossil SCM
When parsing glob settings, allow splits on newlines as well as commas. Allows versionable glob settings to be written one glob per line for readability.
Commit
7d048033924f6171390e97b680f20b4972e367f5
Parent
09e52f0df7bab79…
1 file changed
+4
-4
+4
-4
| --- src/glob.c | ||
| +++ src/glob.c | ||
| @@ -110,24 +110,24 @@ | ||
| 110 | 110 | p = fossil_malloc( sizeof(*p) + nList+1 ); |
| 111 | 111 | memset(p, 0, sizeof(*p)); |
| 112 | 112 | z = (char*)&p[1]; |
| 113 | 113 | memcpy(z, zPatternList, nList+1); |
| 114 | 114 | while( z[0] ){ |
| 115 | - while( z[0]==',' || z[0]==' ' ) z++; /* Skip leading spaces */ | |
| 115 | + while( z[0]==',' || z[0]==' ' || z[0]=='\n' || z[0]=='\r' ) z++; /* Skip leading spaces and newlines */ | |
| 116 | 116 | if( z[0]=='\'' || z[0]=='"' ){ |
| 117 | 117 | delimiter = z[0]; |
| 118 | 118 | z++; |
| 119 | 119 | }else{ |
| 120 | 120 | delimiter = ','; |
| 121 | 121 | } |
| 122 | 122 | if( z[0]==0 ) break; |
| 123 | 123 | p->azPattern = fossil_realloc(p->azPattern, (p->nPattern+1)*sizeof(char*) ); |
| 124 | 124 | p->azPattern[p->nPattern++] = z; |
| 125 | - for(i=0; z[i] && z[i]!=delimiter; i++){} | |
| 125 | + for(i=0; z[i] && z[i]!=delimiter && z[i]!='\n' && z[i]!='\r'; i++){} | |
| 126 | 126 | if( delimiter==',' ){ |
| 127 | - /* Remove trailing spaces on a comma-delimited pattern */ | |
| 128 | - for(j=i; j>1 && z[j-1]==' '; j--){} | |
| 127 | + /* Remove trailing spaces / newlines on a comma-delimited pattern */ | |
| 128 | + for(j=i; j>1 && (z[j-1]==' ' || z[j-1]=='\n' || z[j-1]=='\r'); j--){} | |
| 129 | 129 | if( j<i ) z[j] = 0; |
| 130 | 130 | } |
| 131 | 131 | if( z[i]==0 ) break; |
| 132 | 132 | z[i] = 0; |
| 133 | 133 | z += i+1; |
| 134 | 134 |
| --- src/glob.c | |
| +++ src/glob.c | |
| @@ -110,24 +110,24 @@ | |
| 110 | p = fossil_malloc( sizeof(*p) + nList+1 ); |
| 111 | memset(p, 0, sizeof(*p)); |
| 112 | z = (char*)&p[1]; |
| 113 | memcpy(z, zPatternList, nList+1); |
| 114 | while( z[0] ){ |
| 115 | while( z[0]==',' || z[0]==' ' ) z++; /* Skip leading spaces */ |
| 116 | if( z[0]=='\'' || z[0]=='"' ){ |
| 117 | delimiter = z[0]; |
| 118 | z++; |
| 119 | }else{ |
| 120 | delimiter = ','; |
| 121 | } |
| 122 | if( z[0]==0 ) break; |
| 123 | p->azPattern = fossil_realloc(p->azPattern, (p->nPattern+1)*sizeof(char*) ); |
| 124 | p->azPattern[p->nPattern++] = z; |
| 125 | for(i=0; z[i] && z[i]!=delimiter; i++){} |
| 126 | if( delimiter==',' ){ |
| 127 | /* Remove trailing spaces on a comma-delimited pattern */ |
| 128 | for(j=i; j>1 && z[j-1]==' '; j--){} |
| 129 | if( j<i ) z[j] = 0; |
| 130 | } |
| 131 | if( z[i]==0 ) break; |
| 132 | z[i] = 0; |
| 133 | z += i+1; |
| 134 |
| --- src/glob.c | |
| +++ src/glob.c | |
| @@ -110,24 +110,24 @@ | |
| 110 | p = fossil_malloc( sizeof(*p) + nList+1 ); |
| 111 | memset(p, 0, sizeof(*p)); |
| 112 | z = (char*)&p[1]; |
| 113 | memcpy(z, zPatternList, nList+1); |
| 114 | while( z[0] ){ |
| 115 | while( z[0]==',' || z[0]==' ' || z[0]=='\n' || z[0]=='\r' ) z++; /* Skip leading spaces and newlines */ |
| 116 | if( z[0]=='\'' || z[0]=='"' ){ |
| 117 | delimiter = z[0]; |
| 118 | z++; |
| 119 | }else{ |
| 120 | delimiter = ','; |
| 121 | } |
| 122 | if( z[0]==0 ) break; |
| 123 | p->azPattern = fossil_realloc(p->azPattern, (p->nPattern+1)*sizeof(char*) ); |
| 124 | p->azPattern[p->nPattern++] = z; |
| 125 | for(i=0; z[i] && z[i]!=delimiter && z[i]!='\n' && z[i]!='\r'; i++){} |
| 126 | if( delimiter==',' ){ |
| 127 | /* Remove trailing spaces / newlines on a comma-delimited pattern */ |
| 128 | for(j=i; j>1 && (z[j-1]==' ' || z[j-1]=='\n' || z[j-1]=='\r'); j--){} |
| 129 | if( j<i ) z[j] = 0; |
| 130 | } |
| 131 | if( z[i]==0 ) break; |
| 132 | z[i] = 0; |
| 133 | z += i+1; |
| 134 |