diskrdf.c
上传用户:szhypcb168
上传日期:2007-01-06
资源大小:2187k
文件大小:3k
源码类别:

语音压缩

开发平台:

Unix_Linux

  1. /*  ----------------------  DATA FILE READ ROUTINES  -----------------------  */
  2. /*  -----------------------  Sun FORTRAN Interface  ------------------------  */
  3. /*  -----------------  Interface Version 1.0   June 1988  ------------------  */
  4. /*  ------------------------------------------------------------------------  */
  5. #include "diskio.h"
  6. /*  -------------------  OPEN VARIABLE CHANNEL ROUTINE  --------------------  */
  7. open_var_channel_ ( filename, var_name, fn_leng, vn_leng )
  8. char filename[], var_name[];
  9. int fn_leng, vn_leng;
  10. {
  11.    char *add_null(), ts[MAX_VARNAME_LENG+1];
  12.    strcpy(ts, add_null(var_name, vn_leng) );
  13.    return( open_var_channel(add_null(filename, fn_leng), ts) );
  14. }
  15. /*  ---------------------  OPEN BLOCK CHANNEL ROUTINE  ---------------------  */
  16. open_block_channel_ ( filename, fn_leng )
  17. char filename[];
  18. int fn_leng;
  19. {
  20.    char *add_null();
  21.    return( open_block_channel( add_null(filename, fn_leng) ) );
  22. }
  23. /*  ------------------------  READ FORMAT ROUTINE  -------------------------  */
  24. read_format_ ( filename, format, vname, fn_leng, vn_leng )
  25. char filename[], *vname;
  26. int format[], fn_leng, vn_leng;
  27. {
  28.    char *add_null(), *vnames[MAX_VARS_PER_BLK];
  29.    int i;
  30.    for(i=0; i<MAX_VARS_PER_BLK; i++) vnames[i] = vname + i*vn_leng;
  31.    return( read_format(add_null(filename, fn_leng), format, vnames) );
  32. }
  33. /*  ------------------------  FILE LENGTH ROUTINE  -------------------------  */
  34. file_length_ ( channel_p, bytes, samples, blocks )
  35. int *channel_p, *bytes, *samples, *blocks;
  36. {
  37.    return( file_length(*channel_p, bytes, samples, blocks) );
  38. }
  39. /*  ------------------------  GOTO SAMPLE ROUTINE  -------------------------  */
  40. goto_sample_ ( channel_p, sample_num_p, how_p )
  41. int *channel_p, *sample_num_p, *how_p;
  42. {
  43.    return( goto_sample(*channel_p, *sample_num_p, *how_p) );
  44. }
  45. /*  -----------------------  READ VARIABLE ROUTINE  ------------------------  */
  46. read_variable_ ( channel_p, values, n_p, n_read )
  47. int *channel_p, *n_p, *n_read;
  48. char values[];
  49. {
  50.    return( read_variable(*channel_p, values, *n_p, n_read) );
  51. }
  52. /*  ------------------------  GOTO BLOCK ROUTINE  --------------------------  */
  53. goto_block_ ( channel_p, block_num_p, how_p )
  54. int *channel_p, *block_num_p, *how_p;
  55. {
  56.    return( goto_block(*channel_p, *block_num_p, *how_p) );
  57. }
  58. /*  ------------------------  READ BLOCK ROUTINE  --------------------------  */
  59. read_block_ ( channel_p, val_pntr )
  60. char *val_pntr[];
  61. int *channel_p;
  62. {
  63.    return( read_block(*channel_p, val_pntr) );
  64. }
  65. /*  -----------------------  CLOSE CHANNEL ROUTINE  ------------------------  */
  66. close_channel_ ( channel_p )
  67. int *channel_p;
  68. {
  69.    return( close_channel(*channel_p) );
  70. }
  71. /*  ----------------------  DISK READ ERROR ROUTINES  ----------------------  */
  72. print_disk_read_error_ ( err_num_p )
  73. int *err_num_p;
  74. {
  75.    print_disk_read_error(*err_num_p);
  76.    return;
  77. }
  78. /* NO FORTRAN INTERFACE TO DISK_READ_ERROR YET */
  79. /*  ------------------------------  add_null  ------------------------------  */
  80. #define MAX_STRING_LENGTH   100
  81. static char *add_null(string, length)
  82. char string[];
  83. int length;
  84. {
  85.    static char ts[MAX_STRING_LENGTH + 1];
  86.    int i;
  87.    if (length > MAX_STRING_LENGTH) length = MAX_STRING_LENGTH;
  88.    for (i=0; i<length; i++) ts[i] = string[i]; /* copy input string */
  89.    ts[length] = '';               /* and terminate it with a null */
  90.    i = length - 1;      /* start at end of string */
  91.    while (ts[i] == ' ') ts[i--] = '';  /* change trailing blanks to nulls */
  92.    return(ts);
  93. }