Changeset 1126:a7e44a92590f in roaraudio


Ignore:
Timestamp:
01/17/09 02:15:34 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

invented the metasave and metaload commands

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roarclients/roarctl.c

    r1123 r1126  
    343343} 
    344344 
     345int load_meta (struct roar_connection * con, int id, char * file) { 
     346 struct roar_meta   meta; 
     347 struct roar_stream s; 
     348 int mode_i = ROAR_META_MODE_SET; 
     349 FILE * in; 
     350 char lion[1024]; 
     351 char * v; 
     352 
     353 memset(&s, 0, sizeof(s)); 
     354 
     355 s.id = id; 
     356 
     357 if ( (in = fopen(file, "r")) == NULL ) 
     358  return -1; 
     359 
     360 while (fgets(lion, 1024, in) != NULL) { 
     361  if ( (v = strtok(lion, "\r\n")) != NULL ) 
     362   if ( (v = strtok(NULL, "\r\n")) != NULL ) 
     363    *(v-1) = 0; 
     364 
     365  if ( (v = strstr(lion, "=")) == NULL ) { 
     366   fprintf(stderr, "Error: can not parse meta data lion: %s\n", lion); 
     367   continue; 
     368  } 
     369 
     370  *v++ = 0; 
     371 
     372  meta.type   = roar_meta_inttype(lion); 
     373  meta.value  = v; 
     374  meta.key[0] = 0; 
     375 
     376  if ( meta.type == -1 ) { 
     377   fprintf(stderr, "Error: unknown type: %s\n", lion); 
     378   continue; 
     379  } 
     380 
     381  if ( roar_stream_meta_set(con, &s, mode_i, &meta) == -1 ) 
     382   return -1; 
     383 } 
     384 
     385 fclose(in); 
     386 
     387 meta.type  = ROAR_META_TYPE_NONE; 
     388 meta.value = NULL; 
     389 
     390 return roar_stream_meta_set(con, &s, ROAR_META_MODE_FINALIZE, &meta); 
     391} 
     392 
    345393int show_meta_type (struct roar_connection * con, int id, char * type) { 
    346394 struct roar_meta   meta; 
     
    379427 for (i = 0; i < len; i++) 
    380428  show_meta_type(con, id, roar_meta_strtype(types[i])); 
     429 
     430 return 0; 
     431} 
     432 
     433int save_meta (struct roar_connection * con, int id, char * file) { 
     434 struct roar_stream s; 
     435 struct roar_meta   meta; 
     436 int types[ROAR_META_MAX_PER_STREAM]; 
     437 int i; 
     438 int len; 
     439 FILE * out; 
     440 
     441 memset(&s, 0, sizeof(s)); 
     442 
     443 s.id = id; 
     444 
     445 if ( (out = fopen(file, "w")) == NULL ) 
     446  return -1; 
     447 
     448 if ( (len = roar_stream_meta_list(con, &s, types, ROAR_META_MAX_PER_STREAM)) == -1 ) 
     449  return -1; 
     450 
     451 for (i = 0; i < len; i++) { 
     452/* 
     453  show_meta_type(con, id, roar_meta_strtype(types[i])); 
     454*/ 
     455  meta.type  = types[i]; 
     456 
     457  if ( roar_stream_meta_get(con, &s, &meta) == -1 ) 
     458   continue; 
     459 
     460//  printf("Meta %-17s: %s\n", roar_meta_strtype(meta.type), meta.value); 
     461 
     462  fprintf(out, "%s=%s\n", roar_meta_strtype(meta.type), meta.value); 
     463 
     464  roar_meta_free(&meta); 
     465 } 
     466 
     467 fclose(out); 
    381468 
    382469 return 0; 
     
    575662   } 
    576663   i++; 
     664  } else if ( !strcmp(k, "metasave") ) { 
     665   i++; 
     666   if ( save_meta(&con, atoi(argv[i]), argv[i+1]) == -1 ) { 
     667    fprintf(stderr, "Error: can not get meta data\n"); 
     668   } else { 
     669    printf("meta data saved\n"); 
     670   } 
     671   i++; 
     672  } else if ( !strcmp(k, "metaload") ) { 
     673   i++; 
     674   if ( load_meta(&con, atoi(argv[i]), argv[i+1]) == -1 ) { 
     675    fprintf(stderr, "Error: can not set meta data\n"); 
     676   } else { 
     677    printf("meta data saved\n"); 
     678   } 
     679   i++; 
    577680 
    578681  } else { 
Note: See TracChangeset for help on using the changeset viewer.