[BACK]Return to audioctl.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / audioctl

Diff for /src/usr.bin/audioctl/audioctl.c between version 1.44 and 1.45

version 1.44, 2022/12/26 19:16:00 version 1.45, 2023/01/08 06:58:07
Line 43 
Line 43 
 #define STR     2  #define STR     2
 #define ENC     3  #define ENC     3
         int type;          int type;
           int show;
         int set;          int set;
 } fields[] = {  } fields[] = {
         {"name",                &rname.name,            NULL,           STR},          {"name",                &rname.name,            NULL,           STR},
Line 63 
Line 64 
 };  };
   
 const char usagestr[] =  const char usagestr[] =
         "usage: audioctl [-f file]\n"          "usage: audioctl [-f file] [-w wait_sec]\n"
         "       audioctl [-n] [-f file] name ...\n"          "       audioctl [-n] [-f file] [-w wait_sec] name ...\n"
         "       audioctl [-nq] [-f file] name=value ...\n";          "       audioctl [-nq] [-f file] name=value ...\n";
   
 int fd, show_names = 1, quiet = 0;  int fd, show_names = 1, quiet = 0, wait_sec = 0;
   
 /*  /*
  * parse encoding string (examples: s8, u8, s16, s16le, s24be ...)   * parse encoding string (examples: s8, u8, s16, s16le, s24be ...)
Line 198 
Line 199 
         char *lhs, *rhs;          char *lhs, *rhs;
         int set = 0;          int set = 0;
   
         if (ioctl(fd, AUDIO_GETSTATUS, &rstatus) == -1)  
                 err(1, "AUDIO_GETSTATUS");  
         if (ioctl(fd, AUDIO_GETDEV, &rname) == -1)  
                 err(1, "AUDIO_GETDEV");  
         if (ioctl(fd, AUDIO_GETPAR, &rpar) == -1)  
                 err(1, "AUDIO_GETPAR");  
         if (ioctl(fd, AUDIO_GETPOS, &rpos) == -1)  
                 err(1, "AUDIO_GETPOS");  
         if (argc == 0) {          if (argc == 0) {
                 for (f = fields; f->name != NULL; f++) {                  for (f = fields; f->name != NULL; f++)
                         printf("%s=", f->name);                          f->show = 1;
                         print_field(f, f->raddr);  
                         printf("\n");  
                 }  
         }          }
         AUDIO_INITPAR(&wpar);          AUDIO_INITPAR(&wpar);
         for (; argc > 0; argc--, argv++) {          for (; argc > 0; argc--, argv++) {
Line 231 
Line 221 
                         parse_field(f, f->waddr, rhs);                          parse_field(f, f->waddr, rhs);
                         f->set = 1;                          f->set = 1;
                         set = 1;                          set = 1;
                 } else {                  } else
                           f->show = 1;
           }
   
           if (set && wait_sec)
                   errx(1, "Can't set variables wait_secically");
   
           while (1) {
                   if (ioctl(fd, AUDIO_GETSTATUS, &rstatus) == -1)
                           err(1, "AUDIO_GETSTATUS");
                   if (ioctl(fd, AUDIO_GETDEV, &rname) == -1)
                           err(1, "AUDIO_GETDEV");
                   if (ioctl(fd, AUDIO_GETPAR, &rpar) == -1)
                           err(1, "AUDIO_GETPAR");
                   if (ioctl(fd, AUDIO_GETPOS, &rpos) == -1)
                           err(1, "AUDIO_GETPOS");
                   for (f = fields; f->name != NULL; f++) {
                           if (!f->show)
                                   continue;
                         if (show_names)                          if (show_names)
                                 printf("%s=", f->name);                                  printf("%s=", f->name);
                         print_field(f, f->raddr);                          print_field(f, f->raddr);
                         printf("\n");                          printf("\n");
                 }                  }
   
                   if (wait_sec == 0)
                           break;
   
                   /* ioctls are fast, we neglect drift from real-time clock */
                   sleep(wait_sec);
         }          }
   
         if (!set)          if (!set)
                 return;                  return;
   
         if (ioctl(fd, AUDIO_SETPAR, &wpar) == -1)          if (ioctl(fd, AUDIO_SETPAR, &wpar) == -1)
                 err(1, "AUDIO_SETPAR");                  err(1, "AUDIO_SETPAR");
         if (ioctl(fd, AUDIO_GETPAR, &wpar) == -1)          if (ioctl(fd, AUDIO_GETPAR, &wpar) == -1)
Line 261 
Line 277 
 main(int argc, char **argv)  main(int argc, char **argv)
 {  {
         char *path = "/dev/audioctl0";          char *path = "/dev/audioctl0";
           const char *errstr;
         int c;          int c;
   
         while ((c = getopt(argc, argv, "anf:q")) != -1) {          while ((c = getopt(argc, argv, "anf:qw:")) != -1) {
                 switch (c) {                  switch (c) {
                 case 'a':       /* ignored, compat */                  case 'a':       /* ignored, compat */
                         break;                          break;
Line 275 
Line 292 
                         break;                          break;
                 case 'q':                  case 'q':
                         quiet = 1;                          quiet = 1;
                           break;
                   case 'w':
                           wait_sec = strtonum(optarg, 1, INT_MAX, &errstr);
                           if (errstr != NULL)
                                   errx(1, "wait is %s: %s", errstr, optarg);
                         break;                          break;
                 default:                  default:
                         fputs(usagestr, stderr);                          fputs(usagestr, stderr);

Legend:
Removed from v.1.44  
changed lines
  Added in v.1.45