int main(int argc, char** argv, char** env) { if(argc != 3) { printf("USAGE:\n\t%s <PIPE_IN> <PIPE_OUT>\n", argv[0]); return -1; } fd_in = open_in(argv[1]); if(fd_in < 0) { perror("in pine"); return errno; }; fd_out = open_out(argv[2]); if(fd_out < 0) { perror("out pipe"); return errno; }; /* chat here */ while(1) { int ret; char buff[80]; struct pollfd pfd[] = { { .fd = fd_in, .events = POLLIN, }, { .fd = STDIN_FILENO, .events = POLLIN, }, };
int open_in(char* name) { int ret = open(name, O_RDWR); if(ret < 0) { printf("DEBUG: %s not present. Create\n", name); umask(0); ret = mkfifo(name, 0666); if(ret < 0) return ret; printf("DEBUG: %s Created\n", name); return open_in(name); } printf("DEBUG: %s open success\n", name); return ret; }
static int parse_args(int argc, char **argv, struct state *st) { char **cur, n; for (cur = argv + 1, n = 0; cur < argv + argc; cur++) { const char *arg = *cur; switch (n) { case 0: /* input file */ n++; if (arg[0] == '-' && !arg[1]) { st->inname = "<STDIN>"; st->inf = stdin; } else { st->inname = arg; st->inf = open_in(st->inname); } if (!st->inf) goto failure; break; case 1: /* output file */ n++; if (arg[0] == '-' && !arg[1]) { st->outname = "<STDOUT>"; st->outf = stdout; } else { st->outname = arg; st->outf = open_out(st->outname); } if (!st->outf) goto failure; break; default: fprintf(stderr, "usage: %s <in-file.bmp> [<out-file.c>]\n", argv[0]); return 1; } } if (n == 1) { st->outname = "<STDOUT>"; st->outf = stdout; } if (n > 0) return 0; /* success */ failure: return -1; /* failure */ }
static int parse_playlist(HLSContext *c, const char *url, struct variant *var, AVIOContext *in) { int ret = 0, is_segment = 0, is_variant = 0, bandwidth = 0; int64_t duration = 0; enum KeyType key_type = KEY_NONE; uint8_t iv[16] = ""; int has_iv = 0; char key[MAX_URL_SIZE] = ""; char line[1024]; const char *ptr; int close_in = 0; uint8_t *new_url = NULL; if (!in) { ret = open_in(c, &in, url); if (ret < 0) return ret; close_in = 1; } if (av_opt_get(in, "location", AV_OPT_SEARCH_CHILDREN, &new_url) >= 0) url = new_url; read_chomp_line(in, line, sizeof(line)); if (strcmp(line, "#EXTM3U")) { ret = AVERROR_INVALIDDATA; goto fail; } if (var) { free_segment_list(var); var->finished = 0; } while (!in->eof_reached) { read_chomp_line(in, line, sizeof(line)); if (av_strstart(line, "#EXT-X-STREAM-INF:", &ptr)) { struct variant_info info = {{0}}; is_variant = 1; ff_parse_key_value(ptr, (ff_parse_key_val_cb) handle_variant_args, &info); bandwidth = atoi(info.bandwidth); } else if (av_strstart(line, "#EXT-X-KEY:", &ptr)) { struct key_info info = {{0}}; ff_parse_key_value(ptr, (ff_parse_key_val_cb) handle_key_args, &info); key_type = KEY_NONE; has_iv = 0; if (!strcmp(info.method, "AES-128")) key_type = KEY_AES_128; if (!strncmp(info.iv, "0x", 2) || !strncmp(info.iv, "0X", 2)) { ff_hex_to_data(iv, info.iv + 2); has_iv = 1; } av_strlcpy(key, info.uri, sizeof(key)); } else if (av_strstart(line, "#EXT-X-TARGETDURATION:", &ptr)) { if (!var) { var = new_variant(c, 0, url, NULL); if (!var) { ret = AVERROR(ENOMEM); goto fail; } } var->target_duration = atoi(ptr) * AV_TIME_BASE; } else if (av_strstart(line, "#EXT-X-MEDIA-SEQUENCE:", &ptr)) { if (!var) { var = new_variant(c, 0, url, NULL); if (!var) { ret = AVERROR(ENOMEM); goto fail; } } var->start_seq_no = atoi(ptr); } else if (av_strstart(line, "#EXT-X-ENDLIST", &ptr)) { if (var) var->finished = 1; } else if (av_strstart(line, "#EXTINF:", &ptr)) { is_segment = 1; duration = atof(ptr) * AV_TIME_BASE; } else if (av_strstart(line, "#", NULL)) { continue; } else if (line[0]) { if (is_variant) { if (!new_variant(c, bandwidth, line, url)) { ret = AVERROR(ENOMEM); goto fail; } is_variant = 0; bandwidth = 0; } if (is_segment) { struct segment *seg; if (!var) { var = new_variant(c, 0, url, NULL); if (!var) { ret = AVERROR(ENOMEM); goto fail; } } seg = av_malloc(sizeof(struct segment)); if (!seg) { ret = AVERROR(ENOMEM); goto fail; } seg->duration = duration; seg->key_type = key_type; if (has_iv) { memcpy(seg->iv, iv, sizeof(iv)); } else { int seq = var->start_seq_no + var->n_segments; memset(seg->iv, 0, sizeof(seg->iv)); AV_WB32(seg->iv + 12, seq); } ff_make_absolute_url(seg->key, sizeof(seg->key), url, key); ff_make_absolute_url(seg->url, sizeof(seg->url), url, line); dynarray_add(&var->segments, &var->n_segments, seg); is_segment = 0; } } } if (var) var->last_load_time = av_gettime_relative(); fail: av_free(new_url); if (close_in) avio_close(in); return ret; }
int main(int argc,char *argv[]) { unsigned int start = hz1000(); char filename[200]; double starttime, endtime; int sonogram; if(argc==2 && (strcmp(argv[1],"--version") == 0)) { fprintf(stdout,"%s\n",cdp_version); fflush(stdout); return 0; } /* initialise SFSYS */ if( sflinit("paview") < 0 ) { fprintf(stdout,"ERROR: Cannot initialise soundfile system.\n"); fflush(stdout); return tidy_up(3,start); } if(argc!=7) { fprintf(stdout,"ERROR: Wrong number of arguments.\n"); fflush(stdout); return tidy_up(2,start); } if(sscanf(argv[2],"%lf",&starttime)!=1) { fprintf(stdout,"ERROR: cannot read start time.\n"); fflush(stdout); return tidy_up(2,start); } if(sscanf(argv[3],"%lf",&endtime)!=1) { fprintf(stdout,"ERROR: cannot read end time.\n"); fflush(stdout); return tidy_up(2,start); } if(sscanf(argv[4],"%d",&sonogram)!=1) { fprintf(stdout,"ERROR: cannot read sonogram flag.\n"); fflush(stdout); return tidy_up(2,start); } if(sscanf(argv[5],"%d",&startchan)!=1) { fprintf(stdout,"ERROR: cannot read sonogram flag.\n"); fflush(stdout); return tidy_up(2,start); } if(sscanf(argv[6],"%d",&endchan)!=1) { fprintf(stdout,"ERROR: cannot read sonogram flag.\n"); fflush(stdout); return tidy_up(2,start); } /* open input file */ if(open_in(argv[1]) < 0) return tidy_up(2,start); startwin = (int)floor(starttime/frametime); endwin = (int)ceil(endtime/frametime); strcpy(filename,argv[1]); /* get biggest buffer */ if(get_big_buf() == 0) return tidy_up(1,start); /* max soundfiles */ if(make_textfile(sonogram,filename)<0) return tidy_up(1,start); /* tidy up */ return tidy_up(0,start); }