all repos — mgba @ 9de8f084ba55460b02d300c1dd8b8e6c56f691d5

mGBA Game Boy Advance Emulator

src/third-party/libpng/contrib/powerpc-vsx/linux.c (view raw)

 1/* contrib/powerpc-vsx/linux.c
 2 *
 3 * Copyright (c) 2017 Glenn Randers-Pehrson
 4 * Written by Vadim Barkov, 2017.
 5 * Last changed in libpng 1.6.29 [March 16, 2017]
 6 *
 7 * This code is released under the libpng license.
 8 * For conditions of distribution and use, see the disclaimer
 9 * and license in png.h
10 *
11 * STATUS: TESTED
12 * BUG REPORTS: png-mng-implement@sourceforge.net
13 *
14 * png_have_vsx implemented for Linux by reading the widely available
15 * pseudo-file /proc/cpuinfo. 
16 *
17 * This code is strict ANSI-C and is probably moderately portable; it does
18 * however use <stdio.h> and it assumes that /proc/cpuinfo is never localized.
19 */
20
21#include <stdio.h>
22#include <string.h>
23#include <stdlib.h>
24#include "png.h"
25
26#ifndef MAXLINE
27#  define MAXLINE 1024
28#endif
29
30static int
31png_have_vsx(png_structp png_ptr)
32{
33   FILE *f;
34
35   const char *string = "altivec supported";
36   char input[MAXLINE];
37   char *token = NULL;
38
39   PNG_UNUSED(png_ptr)
40
41   f = fopen("/proc/cpuinfo", "r");
42   if (f != NULL)
43   {
44      memset(input,0,MAXLINE);
45      while(fgets(input,MAXLINE,f) != NULL)
46      {
47         token = strstr(input,string);
48         if(token != NULL)
49            return 1;
50      }
51   }
52#ifdef PNG_WARNINGS_SUPPORTED
53   else
54      png_warning(png_ptr, "/proc/cpuinfo open failed");
55#endif
56   return 0;
57}