device_phh_treble/fixSPL/getSPL.c

39 lines
848 B
C

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdint.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv) {
if(argc!=3) {
fprintf(stderr, "Usage: %s <bootimg> <android|spl>\n", argv[0]);
exit(-1);
}
int fd = open(argv[1], O_RDONLY);
lseek(fd, 11*4, SEEK_SET);
uint32_t val = 0;
read(fd, &val, sizeof(val));
int android = val >> 11;
int a = android >> 14;
int b = (android >> 7) & 0x7f;
int c = android & 0x7f;
int spl = val & 0x7ff;
int y = 2000 + (spl >> 4);
int m = spl & 0xf;
fprintf(stderr, "Android: %d.%d.%d\n", a, b, c);
fprintf(stderr, "SPL: %d-%d-01\n", y, m);
if(strcmp(argv[2], "android") == 0) {
printf("%d.%d.%d", a, b, c);
} else if(strcmp(argv[2], "spl") == 0) {
printf("%04d-%02d-%02d", y, m, 1);
}
return 0;
}