Changeset 1353:d3fff5536a2e in roaraudio
- Timestamp:
- 03/23/09 19:52:54 (15 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroar/vio_dstr.h
r1349 r1353 160 160 161 161 int roar_vio_dstr_init_defaults (struct roar_vio_defaults * def, int type, int o_flags, mode_t o_mode); 162 int roar_vio_dstr_init_defaults_c (struct roar_vio_defaults * def, int type, struct roar_vio_defaults * odef, int o_flags); 162 163 163 164 int roar_vio_open_default (struct roar_vio_calls * calls, struct roar_vio_defaults * def); -
libroar/vio_dstr.c
r1350 r1353 168 168 } 169 169 170 int roar_vio_dstr_init_defaults_c (struct roar_vio_defaults * def, int type, struct roar_vio_defaults * odef, int o_flags) { 171 if ( o_flags < 1 ) 172 o_flags = O_RDONLY; 173 174 if ( odef == NULL ) { 175 return roar_vio_dstr_init_defaults(def, type, o_flags, 0644); 176 } else { 177 return roar_vio_dstr_init_defaults(def, type, odef->o_flags, odef->o_mode); 178 } 179 } 180 170 181 int roar_vio_open_default (struct roar_vio_calls * calls, struct roar_vio_defaults * def) { 171 182 if ( calls == NULL || def == NULL ) … … 389 400 c->need_vio = 0; 390 401 next->def = &(next->store_def); 391 if ( c->def != NULL ) { 392 roar_vio_dstr_init_defaults(next->def, ROAR_VIO_DEF_TYPE_FILE, c->def->o_flags, c->def->o_mode); 393 } else { 394 roar_vio_dstr_init_defaults(next->def, ROAR_VIO_DEF_TYPE_FILE, O_RDONLY, 0644); 395 } 402 roar_vio_dstr_init_defaults_c(next->def, ROAR_VIO_DEF_TYPE_FILE, c->def, -1); 396 403 397 404 if ( c->dst[0] == '/' && c->dst[1] == '/' ) { … … 438 445 439 446 if ( c->dst == NULL ) { // we don't have a destination? -> slow way 447 if ( roar_vio_dstr_init_defaults_c(next->def, ROAR_VIO_DEF_TYPE_SOCKET, c->def, O_WRONLY) == -1 ) 448 return -1; 449 440 450 if ( roar_vio_socket_init_dstr_def(next->def, c->dst, AF_UNIX, SOCK_STREAM, c->def) == -1 ) 441 451 return -1; 442 452 } else { // we have a destination? -> fast way 443 if ( c->def != NULL ) { 444 roar_vio_dstr_init_defaults(next->def, ROAR_VIO_DEF_TYPE_SOCKET, c->def->o_flags, c->def->o_mode); 445 } else { 446 roar_vio_dstr_init_defaults(next->def, ROAR_VIO_DEF_TYPE_SOCKET, O_WRONLY, 0644); 447 } 453 if ( roar_vio_dstr_init_defaults_c(next->def, ROAR_VIO_DEF_TYPE_SOCKET, c->def, O_WRONLY) == -1 ) 454 return -1; 448 455 449 456 if ( roar_vio_socket_init_unix_def(next->def, c->dst) == -1 ) … … 456 463 next->def = &(next->store_def); 457 464 465 if ( roar_vio_dstr_init_defaults_c(next->def, ROAR_VIO_DEF_TYPE_SOCKET, c->def, O_WRONLY) == -1 ) 466 return -1; 467 458 468 if ( roar_vio_socket_init_dstr_def(next->def, c->dst, -1, SOCK_STREAM, c->def) == -1 ) 459 469 return -1; … … 464 474 next->def = &(next->store_def); 465 475 476 if ( roar_vio_dstr_init_defaults_c(next->def, ROAR_VIO_DEF_TYPE_SOCKET, c->def, O_WRONLY) == -1 ) 477 return -1; 478 466 479 if ( roar_vio_socket_init_dstr_def(next->def, c->dst, AF_DECnet, SOCK_STREAM, c->def) == -1 ) 467 480 return -1; … … 472 485 next->def = &(next->store_def); 473 486 487 if ( roar_vio_dstr_init_defaults_c(next->def, ROAR_VIO_DEF_TYPE_SOCKET, c->def, O_WRONLY) == -1 ) 488 return -1; 489 474 490 if ( roar_vio_socket_init_dstr_def(next->def, c->dst, AF_INET, SOCK_STREAM, c->def) == -1 ) 475 491 return -1; … … 478 494 c->need_vio = 0; 479 495 next->def = &(next->store_def); 496 497 if ( roar_vio_dstr_init_defaults_c(next->def, ROAR_VIO_DEF_TYPE_SOCKET, c->def, O_WRONLY) == -1 ) 498 return -1; 480 499 481 500 if ( roar_vio_socket_init_dstr_def(next->def, c->dst, AF_INET, SOCK_DGRAM, c->def) == -1 ) … … 487 506 next->def = &(next->store_def); 488 507 508 if ( roar_vio_dstr_init_defaults_c(next->def, ROAR_VIO_DEF_TYPE_SOCKET, c->def, O_WRONLY) == -1 ) 509 return -1; 510 489 511 if ( roar_vio_socket_init_dstr_def(next->def, c->dst, AF_INET6, SOCK_STREAM, c->def) == -1 ) 490 512 return -1; … … 493 515 c->need_vio = 0; 494 516 next->def = &(next->store_def); 517 518 if ( roar_vio_dstr_init_defaults_c(next->def, ROAR_VIO_DEF_TYPE_SOCKET, c->def, O_WRONLY) == -1 ) 519 return -1; 495 520 496 521 if ( roar_vio_socket_init_dstr_def(next->def, c->dst, AF_INET6, SOCK_DGRAM, c->def) == -1 ) … … 524 549 next->def, next->def == NULL ? -1 : next->def->type); 525 550 if ( next->def != NULL ) { 526 ROAR_ DBG("roar_vio_dstr_set_defaults(*): i=%i, c->type=0x%.4x(%s): next->def->o_flags=%i", i,551 ROAR_WARN("roar_vio_dstr_set_defaults(*): i=%i, c->type=0x%.4x(%s): next->def->o_flags=%i", i, 527 552 c->type & 0xFFFF, roar_vio_dstr_get_name(c->type), 528 553 next->def->o_flags); … … 582 607 583 608 for (i = 0; (c = &chain[i])->type != ROAR_VIO_DSTR_OBJT_EOL; i++) { 584 ROAR_DBG("roar_vio_dstr_build_chain(*): i=%i, c->type=0x%.4x(%s): need_vio=%i ", i,585 c->type & 0xFFFF, roar_vio_dstr_get_name(c->type), c->need_vio );609 ROAR_DBG("roar_vio_dstr_build_chain(*): i=%i, c->type=0x%.4x(%s): need_vio=%i, def->o_flags=%i", i, 610 c->type & 0xFFFF, roar_vio_dstr_get_name(c->type), c->need_vio, c->def->o_flags); 586 611 587 612 if ( c->need_vio ) { … … 625 650 case ROAR_VIO_DSTR_OBJT_HTTP10: 626 651 case ROAR_VIO_DSTR_OBJT_HTTP11: 627 if ( roar_vio_open_proto(tc, prev, c->dst, ROAR_VIO_PROTO_P_HTTP, i == 0 ? NULL : chain[i-1].def) == -1 ) {652 if ( roar_vio_open_proto(tc, prev, c->dst, ROAR_VIO_PROTO_P_HTTP, c->def) == -1 ) { 628 653 _ret(-1); 629 654 } … … 631 656 case ROAR_VIO_DSTR_OBJT_GOPHER: 632 657 case ROAR_VIO_DSTR_OBJT_GOPHER_PLUS: 633 if ( roar_vio_open_proto(tc, prev, c->dst, ROAR_VIO_PROTO_P_GOPHER, i == 0 ? NULL : chain[i-1].def) == -1 ) {658 if ( roar_vio_open_proto(tc, prev, c->dst, ROAR_VIO_PROTO_P_GOPHER, c->def) == -1 ) { 634 659 _ret(-1); 635 660 } -
libroar/vio_proto.c
r1352 r1353 50 50 } 51 51 52 if ( dstr == NULL ) 53 dstr = "//"; 54 52 55 if ( roar_vio_dstr_init_defaults(def, ROAR_VIO_DEF_TYPE_SOCKET, O_RDWR, 0644) == -1 ) 53 56 return -1; … … 62 65 *ed = 0; 63 66 67 ROAR_WARN("roar_vio_proto_init_def(*): def->o_flags=%i", def->o_flags); 68 64 69 ret = roar_vio_socket_init_dstr_def(def, dstr, -1, SOCK_STREAM, def); 70 71 ROAR_WARN("roar_vio_proto_init_def(*): def->o_flags=%i", def->o_flags); 65 72 66 73 if ( ed != NULL ) … … 77 84 ROAR_WARN("roar_vio_open_proto(calls=%p, dst=%p, dstr='%s', proto=%i, odef=%p) = ?", calls, dst, dstr, proto, odef); 78 85 79 if ( calls == NULL || dst == NULL || dstr== NULL )86 if ( calls == NULL || dst == NULL || odef == NULL ) 80 87 return -1; 81 88 89 ROAR_WARN("roar_vio_open_proto(*): odef->o_flags=%i", odef->o_flags); 82 90 ROAR_DBG("roar_vio_open_proto(*) = ?"); 83 91 … … 85 93 return -1; 86 94 87 dstr += 2; 88 host = dstr; 95 ROAR_DBG("roar_vio_open_proto(*) = ?"); 89 96 90 if ( (tmp = strstr(dstr, "/")) == NULL ) 91 return -1; 97 if ( dstr != NULL ) { 98 dstr += 2; 99 host = dstr; 92 100 93 *tmp++ = 0;94 dstr = tmp;101 if ( (tmp = strstr(dstr, "/")) == NULL ) 102 return -1; 95 103 96 if ( (tmp = strstr(dstr, "#")) != NULL ) 97 *tmp = 0; 104 *tmp++ = 0; 105 dstr = tmp; 106 107 if ( (tmp = strstr(dstr, "#")) != NULL ) 108 *tmp = 0; 109 } else { 110 ROAR_DBG("roar_vio_open_proto(*): no dstr!, odef->type=%i", odef->type); 111 if ( odef->type == ROAR_VIO_DEF_TYPE_FILE ) { 112 dstr = odef->d.file; 113 host = "localhost"; 114 115 for (; *dstr == '/'; dstr++); 116 117 } else if ( odef->type == ROAR_VIO_DEF_TYPE_SOCKET ) { 118 dstr = ""; // index document 119 host = odef->d.socket.host; 120 } else { 121 return -1; 122 } 123 } 98 124 99 125 ROAR_DBG("roar_vio_open_proto(*) = ?"); 126 ROAR_WARN("roar_vio_open_proto(*): proto=%i, host='%s', file='%s'", proto, host, dstr); 100 127 101 128 switch (proto) { -
libroar/vio_socket.c
r1350 r1353 230 230 return -1; 231 231 232 memcpy(def, odef, sizeof(struct roar_vio_defaults)); 232 if ( def != odef ) 233 memcpy(def, odef, sizeof(struct roar_vio_defaults)); 234 233 235 return 0; 234 236 }
Note: See TracChangeset
for help on using the changeset viewer.