123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /* contrib/powerpc-vsx/linux.c
- *
- * Copyright (c) 2017 Glenn Randers-Pehrson
- * Written by Vadim Barkov, 2017.
- * Last changed in libpng 1.6.29 [March 16, 2017]
- *
- * This code is released under the libpng license.
- * For conditions of distribution and use, see the disclaimer
- * and license in png.h
- *
- * STATUS: TESTED
- * BUG REPORTS: png-mng-implement@sourceforge.net
- *
- * png_have_vsx implemented for Linux by reading the widely available
- * pseudo-file /proc/cpuinfo.
- *
- * This code is strict ANSI-C and is probably moderately portable; it does
- * however use <stdio.h> and it assumes that /proc/cpuinfo is never localized.
- */
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include "png.h"
- #ifndef MAXLINE
- # define MAXLINE 1024
- #endif
- static int
- png_have_vsx(png_structp png_ptr)
- {
- FILE *f;
- const char *string = "altivec supported";
- char input[MAXLINE];
- char *token = NULL;
- PNG_UNUSED(png_ptr)
- f = fopen("/proc/cpuinfo", "r");
- if (f != NULL)
- {
- memset(input,0,MAXLINE);
- while(fgets(input,MAXLINE,f) != NULL)
- {
- token = strstr(input,string);
- if(token != NULL)
- return 1;
- }
- }
- #ifdef PNG_WARNINGS_SUPPORTED
- else
- png_warning(png_ptr, "/proc/cpuinfo open failed");
- #endif
- return 0;
- }
|