Print this page
1031 Minor audioctl save-controls issue with newlines in hardware info
10620 audioctl: don't return failure because of illegal enum value
10617 audiohd: don't create record-source control if there is none

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/audio/audioctl/audioctl.c
          +++ new/usr/src/cmd/audio/audioctl/audioctl.c
↓ open down ↓ 491 lines elided ↑ open up ↑
 492  492                  (void) snprintf(valbuf, sizeof (valbuf), "%d:%d",
 493  493                      (int)AUDIO_CTRL_STEREO_LEFT(cval.value),
 494  494                      (int)AUDIO_CTRL_STEREO_RIGHT(cval.value));
 495  495                  break;
 496  496  
 497  497          case MIXT_ENUM:
 498  498                  str = get_enum_str(cinfop, cval.value);
 499  499                  if (str == NULL) {
 500  500                          warn(_("Bad enum index %d for control '%s'\n"),
 501  501                              cval.value, cinfop->ci.extname);
 502      -                        return (EINVAL);
      502 +                        /*
      503 +                         * Apparently the driver gave us bogus data for this
      504 +                         * control, so we will ignore it.
      505 +                         *
      506 +                         * Don't confuse the user by returning an error status.
      507 +                         */
      508 +                        return (0);
 503  509                  }
 504  510  
 505  511                  (void) snprintf(valbuf, sizeof (valbuf), "%s", str);
 506  512                  break;
 507  513  
 508  514          default:
 509  515                  return (0);
 510  516          }
 511  517  
 512  518          /*
↓ open down ↓ 312 lines elided ↑ open up ↑
 825  831          }
 826  832  
 827  833          return (0);
 828  834  }
 829  835  
 830  836  int
 831  837  do_show_device(int argc, char **argv)
 832  838  {
 833  839          int             optc;
 834  840          char            *devname = NULL;
      841 +        char            *p, *n;
      842 +        const char      *m;
 835  843          device_t        *d;
 836  844  
 837  845          while ((optc = getopt(argc, argv, "d:v")) != EOF) {
 838  846                  switch (optc) {
 839  847                  case 'd':
 840  848                          devname = optarg;
 841  849                          break;
 842  850                  case 'v':
 843  851                          break;
 844  852                  default:
↓ open down ↓ 9 lines elided ↑ open up ↑
 854  862          }
 855  863  
 856  864          if ((d = find_device(devname)) == NULL) {
 857  865                  return (ENODEV);
 858  866          }
 859  867  
 860  868          msg(_("Device: %s\n"), d->mixer.devnode);
 861  869          msg(_("  Name    = %s\n"), d->card.shortname);
 862  870          msg(_("  Config  = %s\n"), d->card.longname);
 863  871  
 864      -        if (strlen(d->card.hw_info)) {
 865      -                msg(_("  HW Info = %s"), d->card.hw_info);
      872 +        for (m = "  HW Info = %s\n", p = d->card.hw_info;
      873 +            p != NULL && strlen(p) != 0;
      874 +            m = "\t    %s\n", p = n) {
      875 +                if ((n = strchr(p, '\n')) != NULL)
      876 +                        *n++ = '\0';
      877 +                msg(_(m), p);
 866  878          }
 867  879  
 868  880          return (0);
 869  881  }
 870  882  
 871  883  int
 872  884  do_show_control(int argc, char **argv)
 873  885  {
 874  886          int             optc;
 875  887          int             rval = 0;
↓ open down ↓ 127 lines elided ↑ open up ↑
1003 1015          int             rval = 0;
1004 1016          device_t        *d;
1005 1017          char            *devname = NULL;
1006 1018          char            *fname;
1007 1019          int             i;
1008 1020          int             rv;
1009 1021          cinfo_t         *cinfop;
1010 1022          FILE            *fp;
1011 1023          int             fd;
1012 1024          int             mode;
     1025 +        char            *p, *n;
     1026 +        const char      *m;
1013 1027  
1014 1028          mode = O_WRONLY | O_CREAT | O_EXCL;
1015 1029  
1016 1030          while ((optc = getopt(argc, argv, "d:f")) != EOF) {
1017 1031                  switch (optc) {
1018 1032                  case 'd':
1019 1033                          devname = optarg;
1020 1034                          break;
1021 1035                  case 'f':
1022 1036                          mode &= ~O_EXCL;
↓ open down ↓ 26 lines elided ↑ open up ↑
1049 1063                  perror(_("Unable to open file\n"));
1050 1064                  (void) close(fd);
1051 1065                  (void) unlink(fname);
1052 1066                  return (errno);
1053 1067          }
1054 1068  
1055 1069          (void) fprintf(fp, "# Device: %s\n", d->mixer.devnode);
1056 1070          (void) fprintf(fp, "# Name    = %s\n", d->card.shortname);
1057 1071          (void) fprintf(fp, "# Config  = %s\n", d->card.longname);
1058 1072  
1059      -        if (strlen(d->card.hw_info)) {
1060      -                (void) fprintf(fp, "# HW Info = %s", d->card.hw_info);
     1073 +        for (m = "# HW Info = %s\n", p = d->card.hw_info;
     1074 +            p != NULL && strlen(p) != 0;
     1075 +            m = "#\t    %s\n", p = n) {
     1076 +                if ((n = strchr(p, '\n')) != NULL)
     1077 +                        *n++ = '\0';
     1078 +                fprintf(fp, m, p);
1061 1079          }
1062 1080          (void) fprintf(fp, "#\n");
1063 1081  
1064 1082          print_header(fp, 0);
1065 1083  
1066 1084          for (i = 0; i < d->cmax; i++) {
1067 1085                  cinfop = &d->controls[i];
1068 1086                  rv = print_control(fp, d, cinfop, 0);
1069 1087                  rval = rval ? rval : rv;
1070 1088          }
↓ open down ↓ 239 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX