cmdifo.c
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:2k
源码类别:

DVD

开发平台:

Unix_Linux

  1. /*
  2.  *
  3.  * Copyright (C) 1998,1999  Thomas Mirlacher
  4.  *
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2 of the License, or
  8.  * (at your option) any later version.
  9.  * 
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  * 
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  * 
  19.  * The author may be reached as dent@cosy.sbg.ac.at, or
  20.  * Thomas Mirlacher, Jakob-Haringerstr. 2, A-5020 Salzburg,
  21.  * Austria
  22.  *
  23.  *------------------------------------------------------------
  24.  *
  25.  */
  26. #include <stdio.h>
  27. #include <sys/types.h>
  28. #include <unistd.h>
  29. #include <fcntl.h>
  30. #include <netinet/in.h>
  31. #include "ifo.h"
  32. char version[] = "V0.0.4";
  33. /**
  34.  *
  35.  */
  36. int main (int argc, char **argv)
  37. {
  38. ifo_t *ifo;
  39. int fd;
  40. printf ("free InFormatiOn project %sn", version);
  41. printf ("displays Commandsn");
  42. printf ("--------------------------------n");
  43. printf ("(c) 1999 by Thomas Mirlachernn");
  44. if ((fd = open (argv[1], O_RDONLY)) < 0) {
  45. fprintf (stderr, "error opening file %s.n", argv[1]);
  46. exit (-1);
  47. }
  48. if (!(ifo = ifoOpen (fd, 0))) {
  49. fprintf (stderr, "error initializing ifo.n");
  50. exit (-1);
  51. }
  52. {
  53. int i;
  54. ifo_hdr_t *hdr = (ifo_hdr_t *) ifo->data[ID_TITLE_PGCI];
  55. if (hdr) {
  56. printf ("TITLE PGCI commands:n");
  57. printf ("--------------------n");
  58. for (i=0; i<ntohs(hdr->num); i++) {
  59. char *ptr;
  60. printf ("%d:n---n", i);
  61. if (ifoGetPGCI (hdr, i, &ptr) >= 0)
  62. ifo_print_pgc_cmd (ptr);
  63. printf ("n");
  64. }
  65. }
  66. }
  67. {
  68. int i, s;
  69. ifo_hdr_t *_hdr = (ifo_hdr_t *) ifo->data[ID_MENU_PGCI];
  70. if (_hdr) {
  71. printf ("MENU PGCI commands:n");
  72. printf ("--------------------n");
  73. for (i=0; i<ntohs(_hdr->num); i++) {
  74. ifo_hdr_t *hdr;
  75. printf ("lu%d:n---n", i);
  76. if (ifoGetPGCI ((ifo_hdr_t *) ifo->data[ID_MENU_PGCI], i, (char **) &hdr) < 0)
  77. return -1;
  78. for (s=0; s<ntohs(hdr->num); s++) {
  79. char *ptr_pgc;
  80. printf ("%d:n---n", s);
  81. if (ifoGetPGCI (hdr, s, &ptr_pgc) >= 0)
  82. ifo_print_pgc_cmd (ptr_pgc);
  83. printf ("n");
  84. }
  85. }
  86. }
  87. }
  88. close (fd);
  89. return 0;
  90. }