Lines Matching refs:req

54 gctl_dump(struct gctl_req *req, FILE *f)  in gctl_dump()  argument
60 if (req == NULL) { in gctl_dump()
64 fprintf(f, "Dump of gctl request at %p:\n", req); in gctl_dump()
65 if (req->error != NULL) in gctl_dump()
66 fprintf(f, " error:\t\"%s\"\n", req->error); in gctl_dump()
69 for (i = 0; i < req->narg; i++) { in gctl_dump()
70 ap = &req->arg[i]; in gctl_dump()
95 gctl_set_error(struct gctl_req *req, const char *error, ...) in gctl_set_error() argument
99 if (req->error != NULL) in gctl_set_error()
102 vasprintf(&req->error, error, ap); in gctl_set_error()
111 gctl_check_alloc(struct gctl_req *req, void *ptr) in gctl_check_alloc() argument
116 gctl_set_error(req, nomemmsg); in gctl_check_alloc()
117 if (req->error == NULL) in gctl_check_alloc()
118 req->error = nomemmsg; in gctl_check_alloc()
136 gctl_new_arg(struct gctl_req *req) in gctl_new_arg() argument
140 req->narg++; in gctl_new_arg()
141 req->arg = reallocf(req->arg, sizeof *ap * req->narg); in gctl_new_arg()
142 gctl_check_alloc(req, req->arg); in gctl_new_arg()
143 if (req->arg == NULL) { in gctl_new_arg()
144 req->narg = 0; in gctl_new_arg()
147 ap = req->arg + (req->narg - 1); in gctl_new_arg()
153 gctl_add_param(struct gctl_req *req, const char *name, int len, void *value, in gctl_add_param() argument
158 if (req == NULL || req->error != NULL) in gctl_add_param()
160 ap = gctl_new_arg(req); in gctl_add_param()
164 gctl_check_alloc(req, ap->name); in gctl_add_param()
179 gctl_ro_param(struct gctl_req *req, const char *name, int len, const void* value) in gctl_ro_param() argument
182 gctl_add_param(req, name, len, __DECONST(void *, value), GCTL_PARAM_RD); in gctl_ro_param()
186 gctl_rw_param(struct gctl_req *req, const char *name, int len, void *value) in gctl_rw_param() argument
189 gctl_add_param(req, name, len, value, GCTL_PARAM_RW); in gctl_rw_param()
193 gctl_issue(struct gctl_req *req) in gctl_issue() argument
197 if (req == NULL) in gctl_issue()
199 if (req->error != NULL) in gctl_issue()
200 return (req->error); in gctl_issue()
202 req->version = GCTL_VERSION; in gctl_issue()
203 req->lerror = BUFSIZ; /* XXX: arbitrary number */ in gctl_issue()
204 req->error = calloc(1, req->lerror); in gctl_issue()
205 if (req->error == NULL) { in gctl_issue()
206 gctl_check_alloc(req, req->error); in gctl_issue()
207 return (req->error); in gctl_issue()
209 req->lerror--; in gctl_issue()
213 req->nerror = ioctl(fd, GEOM_CTL, req); in gctl_issue()
215 if (req->error[0] != '\0') in gctl_issue()
216 return (req->error); in gctl_issue()
217 if (req->nerror == -1) in gctl_issue()
223 gctl_free(struct gctl_req *req) in gctl_free() argument
227 if (req == NULL) in gctl_free()
229 for (i = 0; i < req->narg; i++) { in gctl_free()
230 if (req->arg[i].name != NULL) in gctl_free()
231 free(req->arg[i].name); in gctl_free()
233 free(req->arg); in gctl_free()
234 if (req->error != NULL && req->error != nomemmsg) in gctl_free()
235 free(req->error); in gctl_free()
236 free(req); in gctl_free()