dvorbis.c - vx32 - Local 9vx git repository for patches.
 (HTM) git clone git://r-36.net/vx32
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dvorbis.c (956B)
       ---
            1 
            2 #include <stdio.h>
            3 #include <stdlib.h>
            4 #include <unistd.h>
            5 #include <stdarg.h>
            6 #include <assert.h>
            7 
            8 #include "vorbis/vorbisfile.h"
            9 
           10 
           11 #define BUFSIZE (64*1024)
           12 
           13 static char buf[BUFSIZE];
           14 
           15 
           16 void fatal(const char *fmt, ...)
           17 {
           18         va_list ap;
           19         va_start(ap, fmt);
           20         vfprintf(stderr, fmt, ap);
           21         va_end(ap);
           22         fputc('\n', stderr);
           23         exit(2);
           24 }
           25 
           26 
           27 FILE *fopen(const char *path, const char *mode) { assert(0); }
           28 int fseek(FILE *stream, long offset, int whence) { return -1; }
           29 long ftell(FILE *stream) { assert(0); }
           30 int fclose(FILE *fp) { assert(0); }
           31 void perror(const char *s) { assert(0); }
           32 
           33 
           34 int main(int argc, char **argv)
           35 {
           36         OggVorbis_File vf;
           37         int rc = ov_open(stdin, &vf, NULL, 0);
           38         if (rc != 0)
           39                 fatal("ov_open: %d", rc);
           40 
           41         while (1) {
           42                 long act = ov_read(&vf, buf, BUFSIZE, 0, 2, 1, NULL);
           43                 if (act < 0)
           44                         fatal("ov_read: %d", rc);
           45                 if (act == 0)
           46                         break;
           47 
           48                 rc = write(STDOUT_FILENO, buf, act);
           49                 if (rc < 0)
           50                         fatal("write: %d", rc);
           51         }
           52 
           53         return 0;
           54 }
           55