Lines Matching refs:state

128     struct program_bidder *state, const void *signature, size_t signature_len)
132 state->signature_len = signature_len;
133 state->signature = malloc(signature_len);
134 memcpy(state->signature, signature, signature_len);
140 bidder->data = state;
154 struct program_bidder *state;
163 * Allocate our private state.
165 state = (struct program_bidder *)calloc(1, sizeof (*state));
166 if (state == NULL)
168 state->cmd = strdup(cmd);
169 if (state->cmd == NULL)
172 return set_bidder_signature(bidder, state, signature, signature_len);
174 free_state(state);
182 struct program_bidder *state = (struct program_bidder *)self->data;
184 free_state(state);
189 free_state(struct program_bidder *state)
192 if (state) {
193 free(state->cmd);
194 free(state->signature);
195 free(state);
209 struct program_bidder *state = self->data;
213 if (state->signature_len > 0) {
215 state->signature_len, NULL);
219 if (memcmp(p, state->signature, state->signature_len) != 0)
221 return ((int)state->signature_len * 8);
225 if (state->inhibit)
227 state->inhibit = 1;
239 child_stop(struct archive_read_filter *self, struct program_filter *state)
242 if (state->child_stdin != -1) {
243 close(state->child_stdin);
244 state->child_stdin = -1;
246 if (state->child_stdout != -1) {
247 close(state->child_stdout);
248 state->child_stdout = -1;
251 if (state->child != 0) {
254 state->waitpid_return
255 = waitpid(state->child, &state->exit_status, 0);
256 } while (state->waitpid_return == -1 && errno == EINTR);
258 CloseHandle(state->child);
260 state->child = 0;
263 if (state->waitpid_return < 0) {
271 if (WIFSIGNALED(state->exit_status)) {
279 if (WTERMSIG(state->exit_status) == SIGPIPE)
284 WTERMSIG(state->exit_status));
289 if (WIFEXITED(state->exit_status)) {
290 if (WEXITSTATUS(state->exit_status) == 0)
296 WEXITSTATUS(state->exit_status));
309 struct program_filter *state = self->data;
313 HANDLE handle = (HANDLE)_get_osfhandle(state->child_stdout);
341 ret = read(state->child_stdout, buf, requested);
349 return (child_stop(self, state));
353 if (state->child_stdin == -1) {
355 __archive_check_child(state->child_stdin,
356 state->child_stdout);
363 close(state->child_stdin);
364 state->child_stdin = -1;
365 fcntl(state->child_stdout, F_SETFL, 0);
372 ret = write(state->child_stdin, p, avail);
380 __archive_check_child(state->child_stdin,
381 state->child_stdout);
384 close(state->child_stdin);
385 state->child_stdin = -1;
386 fcntl(state->child_stdout, F_SETFL, 0);
399 struct program_filter *state;
407 state = (struct program_filter *)calloc(1, sizeof(*state));
409 if (state == NULL || out_buf == NULL ||
410 archive_string_ensure(&state->description, l) == NULL) {
413 if (state != NULL) {
414 archive_string_free(&state->description);
415 free(state);
420 archive_strcpy(&state->description, prefix);
421 archive_strcat(&state->description, cmd);
424 self->name = state->description.s;
426 state->out_buf = out_buf;
427 state->out_buf_len = out_buf_len;
429 ret = __archive_create_child(cmd, &state->child_stdin,
430 &state->child_stdout, &state->child);
432 free(state->out_buf);
433 archive_string_free(&state->description);
434 free(state);
441 self->data = state;
462 struct program_filter *state;
467 state = (struct program_filter *)self->data;
470 p = state->out_buf;
471 while (state->child_stdout != -1 && total < state->out_buf_len) {
472 bytes = child_read(self, p, state->out_buf_len - total);
484 *buff = state->out_buf;
491 struct program_filter *state;
494 state = (struct program_filter *)self->data;
495 e = child_stop(self, state);
498 free(state->out_buf);
499 archive_string_free(&state->description);
500 free(state);