You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.4 KiB
68 lines
1.4 KiB
4 years ago
|
|
||
|
/* contrib/mips-msa/linux.c
|
||
|
*
|
||
|
* Copyright (c) 2020 Cosmin Truta
|
||
|
* Copyright (c) 2016 Glenn Randers-Pehrson
|
||
|
* Written by Mandar Sahastrabuddhe, 2016.
|
||
|
*
|
||
|
* This code is released under the libpng license.
|
||
|
* For conditions of distribution and use, see the disclaimer
|
||
|
* and license in png.h
|
||
|
*
|
||
|
* SEE contrib/mips-msa/README before reporting bugs
|
||
|
*
|
||
|
* STATUS: SUPPORTED
|
||
|
* BUG REPORTS: png-mng-implement@sourceforge.net
|
||
|
*
|
||
|
* png_have_msa 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>
|
||
|
|
||
|
static int
|
||
|
png_have_msa(png_structp png_ptr)
|
||
|
{
|
||
|
FILE *f = fopen("/proc/cpuinfo", "rb");
|
||
|
|
||
|
char *string = "msa";
|
||
|
char word[10];
|
||
|
|
||
|
if (f != NULL)
|
||
|
{
|
||
|
while(!feof(f))
|
||
|
{
|
||
|
int ch = fgetc(f);
|
||
|
static int i = 0;
|
||
|
|
||
|
while(!(ch <= 32))
|
||
|
{
|
||
|
word[i++] = ch;
|
||
|
ch = fgetc(f);
|
||
|
}
|
||
|
|
||
|
int val = strcmp(string, word);
|
||
|
|
||
|
if (val == 0) {
|
||
|
fclose(f);
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
i = 0;
|
||
|
memset(word, 0, 10);
|
||
|
}
|
||
|
|
||
|
fclose(f);
|
||
|
}
|
||
|
#ifdef PNG_WARNINGS_SUPPORTED
|
||
|
else
|
||
|
png_warning(png_ptr, "/proc/cpuinfo open failed");
|
||
|
#endif
|
||
|
return 0;
|
||
|
}
|