- if($split) {
- push(@c, " char **v, *r;\n",
- " int nv;\n");
- }
- push(@c,
- " int rc = disorder_simple(",
- join(", ",
- "c",
- $split ? "&r" : "NULL",
- "\"$cmd\"",
- @cargs,
- "(char *)NULL"),
- ");\n",
- " if(rc)\n",
- " return rc;\n");
- if($split) {
- push(@c,
- " v = split(r, &nv, SPLIT_QUOTES, 0, 0);\n",
- " if(nv != ", scalar @$returns, ") {\n",
- " disorder_error(0, \"malformed reply to %s\", \"$cmd\");\n",
- " return -1;\n",
- " }\n");
- }
+ if($expected) {
+ push(@c, " char **v;\n",
+ " int nv, rc = disorder_simple_split(",
+ join(", ",
+ "c",
+ "&v",
+ "&nv",
+ $expected,
+ "\"$cmd\"",
+ @cargs,
+ "(char *)NULL"),
+ ");\n",
+ " if(rc)\n",
+ " return rc;\n");
+ } else {
+ push(@c,
+ " int rc = disorder_simple(",
+ join(", ",
+ "c",
+ "NULL",
+ "\"$cmd\"",
+ @cargs,
+ "(char *)NULL"),
+ ");\n",
+ " if(rc)\n",
+ " return rc;\n");
+ }