1.birchutils
1.birchutils.h
#ifndef Birchutils
#define Birchutils
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
typedef unsigned char int8;
typedef unsigned short int int16;
typedef unsigned int int32;
int8 *todotted(in_addr_t);
void zero(int8*, int16);
#endif
2.birchutils.c
#include "birchutils.h"
void zero(int8 *str, int16 size)
{
int8 *p;
int16 n;
for(n=0,p=str;n<size;n++,p++)
{
*p=0;
return;
}
}
int8 *todotted(in_addr_t ip){
int8 a, b,c,d;
static int8 buf[16];
d =((ip & 0xff000000) >> 24);
c = ((ip & 0xff0000) >> 16);
b =((ip & 0xff00) >> 8);
a =((ip&0xff));
zero(buf,16);
snprintf((char *)buf,15,"%d.%d.%d.%d",a,b,c,d);
return buf;
}
3.makefile
flags=-O3 -Wall -std=c2x
ldflags=-fPIC -shared -ldl -D_GNU_SOURCE
all: clean birchutils.so
birchutils.so: birchutils.o
cc {flags} ^ -o @ {ldflags}
birchutils.o: birchutils.c
cc {flags} -c ^
clean:
rm -rf birchutils.o birchutils.so