@@ -133,17 +133,12 @@ nexttok(const char **pos, struct strbuf *buf)
133133 case 'r' : r = strbuf_putc (buf , '\r' ); break ;
134134 case 't' : r = strbuf_putc (buf , '\t' ); break ;
135135 case '0' : r = strbuf_putc (buf , '\0' ); break ;
136- case '{' : r = strbuf_putc (buf , '{' ); break ;
137- case '}' : r = strbuf_putc (buf , '}' ); break ;
138- default :
139- r = strbuf_putc (buf , '\\' );
140- if (r < 0 )
141- break ;
142- r = strbuf_putc (buf , * p );
136+ default : r = * p ? strbuf_putc (buf , * p ) : 0 ;
143137 }
144138 if (r < 0 )
145139 return r ;
146- p ++ ;
140+ if (* p )
141+ p ++ ;
147142 break ;
148143 default :
149144 r = strbuf_putc (buf , * p ++ );
@@ -241,9 +236,8 @@ parse_default(const char **pos, struct xbps_fmt *fmt, struct strbuf *buf,
241236 return r ;
242237 str = buf -> mem + buf -> len ;
243238 }
244- for (; * p && * p != '"' ; p ++ ) {
245- switch (* p ) {
246- case '\\' :
239+ for (; * p && * p != '"' ;) {
240+ if (* p == '\\' ) {
247241 switch (* ++ p ) {
248242 case '\\' : r = strbuf_putc (buf , '\\' ); break ;
249243 case 'a' : r = strbuf_putc (buf , '\a' ); break ;
@@ -253,15 +247,15 @@ parse_default(const char **pos, struct xbps_fmt *fmt, struct strbuf *buf,
253247 case 'r' : r = strbuf_putc (buf , '\r' ); break ;
254248 case 't' : r = strbuf_putc (buf , '\t' ); break ;
255249 case '0' : r = strbuf_putc (buf , '\0' ); break ;
256- case '"' : r = strbuf_putc (buf , '"' ); break ;
257- default : r = - EINVAL ;
250+ default : r = * p ? strbuf_putc (buf , * p ) : 0 ;
258251 }
259- break ;
260- default :
252+ } else {
261253 r = strbuf_putc (buf , * p );
262254 }
263255 if (r < 0 )
264256 goto err ;
257+ if (* p )
258+ p ++ ;
265259 }
266260 if (* p ++ != '"' ) {
267261 r = - EINVAL ;
0 commit comments