On 5/22/18, Ed Maste <ema...@freebsd.org> wrote:
> Author: emaste
> Date: Tue May 22 14:35:33 2018
> New Revision: 334046
> URL: https://svnweb.freebsd.org/changeset/base/334046
>
> Log:
>   intel-ucode-split: add -n flag to skip creating output files
>
>   Sponsored by:       The FreeBSD Foundation
>
> Modified:
>   head/tools/tools/intel-ucode-split/intel-ucode-split.c

Hi!

Could you please MFC the intel-ucode-split related commits to 11-STABLE?


Thanks,
op

>
> Modified: head/tools/tools/intel-ucode-split/intel-ucode-split.c
> ==============================================================================
> --- head/tools/tools/intel-ucode-split/intel-ucode-split.c    Tue May 22
> 14:26:58 2018 (r334045)
> +++ head/tools/tools/intel-ucode-split/intel-ucode-split.c    Tue May 22
> 14:35:33 2018 (r334046)
> @@ -112,7 +112,7 @@ static void
>  usage(void)
>  {
>
> -     printf("ucode-split [-v] microcode_file\n");
> +     printf("ucode-split [-nv] microcode_file\n");
>       exit(1);
>  }
>
> @@ -124,11 +124,14 @@ main(int argc, char *argv[])
>       size_t len, resid;
>       ssize_t rv;
>       int c, ifd, ofd;
> -     bool vflag;
> +     bool nflag, vflag;
>
> -     vflag = false;
> -     while ((c = getopt(argc, argv, "v")) != -1) {
> +     nflag = vflag = false;
> +     while ((c = getopt(argc, argv, "nv")) != -1) {
>               switch (c) {
> +             case 'n':
> +                     nflag = true;
> +                     break;
>               case 'v':
>                       vflag = true;
>                       break;
> @@ -166,40 +169,48 @@ main(int argc, char *argv[])
>               if (vflag)
>                       dump_header(&hdr);
>
> -             sig_str = format_signature(hdr.processor_signature);
> -             asprintf(&output_file, "%s.%02x", sig_str,
> -                 hdr.processor_flags & 0xff);
> -             free(sig_str);
> -             if (output_file == NULL)
> -                     err(1, "asprintf");
> -             ofd = open(output_file, O_WRONLY | O_CREAT | O_TRUNC, 0600);
> -             if (ofd < 0)
> -                     err(1, "open");
> -
> -             /* Write header. */
> -             rv = write(ofd, &hdr, sizeof(hdr));
> -             if (rv < (ssize_t)sizeof(hdr))
> -                     err(1, "write");
> -
> -             /* Copy data. */
>               resid = (hdr.total_size != 0 ? hdr.total_size : 2048) -
>                   sizeof(hdr);
>               if (resid > 1 << 24) /* Arbitrary chosen maximum size. */
>                       errx(1, "header total_size too large");
> -             while (resid > 0) {
> -                     len = resid < bufsize ? resid : bufsize;
> -                     rv = read(ifd, buf, len);
> -                     if (rv < 0)
> -                             err(1, "read");
> -                     else if (rv < (ssize_t)len)
> -                             errx(1, "truncated microcode data");
> -                     if (write(ofd, buf, len) < (ssize_t)len)
> +
> +             if (nflag) {
> +                     if (lseek(ifd, resid, SEEK_CUR) == -1)
> +                             err(1, "lseek");
> +                     printf("\n");
> +             } else {
> +                     sig_str = format_signature(hdr.processor_signature);
> +                     asprintf(&output_file, "%s.%02x", sig_str,
> +                         hdr.processor_flags & 0xff);
> +                     free(sig_str);
> +                     if (output_file == NULL)
> +                             err(1, "asprintf");
> +                     ofd = open(output_file, O_WRONLY | O_CREAT | O_TRUNC,
> +                         0600);
> +                     if (ofd < 0)
> +                             err(1, "open");
> +     
> +                     /* Write header. */
> +                     rv = write(ofd, &hdr, sizeof(hdr));
> +                     if (rv < (ssize_t)sizeof(hdr))
>                               err(1, "write");
> -                     resid -= len;
> +     
> +                     /* Copy data. */
> +                     while (resid > 0) {
> +                             len = resid < bufsize ? resid : bufsize;
> +                             rv = read(ifd, buf, len);
> +                             if (rv < 0)
> +                                     err(1, "read");
> +                             else if (rv < (ssize_t)len)
> +                                     errx(1, "truncated microcode data");
> +                             if (write(ofd, buf, len) < (ssize_t)len)
> +                                     err(1, "write");
> +                             resid -= len;
> +                     }
> +                     if (vflag)
> +                             printf("written to %s\n\n", output_file);
> +                     close(ofd);
> +                     free(output_file);
>               }
> -             if (vflag)
> -                     printf("written to %s\n\n", output_file);
> -             close(ofd);
> -             free(output_file);
>       }
>  }
> _______________________________________________
> svn-src-h...@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
>
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to