Skip to content

Instantly share code, notes, and snippets.

@skeeto
skeeto / triangle.c
Last active April 25, 2024 13:43
Draw a triangle on Windows using OpenGL 1.1
// Draw a triangle on Windows using OpenGL 1.1
// $ gcc -mwindows -o triangle triangle.c -lopengl32
// This is free and unencumbered software released into the public domain.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <GL/gl.h>
#define countof(a) (int)(sizeof(a) / (sizeof(*(a))))
static LRESULT CALLBACK handler(HWND h, UINT msg, WPARAM wparam, LPARAM lparam)
@skeeto
skeeto / png.c
Last active April 24, 2024 03:41
Small, no-dependency 8-bit indexed PNG writer
// 8-bit indexed PNG writer, no dependencies
// $ cc -o png png.c
// $ ./png >image.png
// This is free and unencumbered software released into the public domain.
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
static uint32_t adler32(uint32_t sum, uint8_t *buf, ptrdiff_t len)
{
@skeeto
skeeto / twoSum.c
Created April 14, 2024 15:20
"Two Sum" benchmark
// "Two Sum" benchmark
// $ cc -O1 -nostartfiles -o twoSum.exe twoSum.c
// $ cl /O1 twoSums.c /link /subsystem:console kernel32.lib libvcruntime.lib
// Ref: https://old.reddit.com/r/C_Programming/comments/1c36391
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#define assert(c) while (!(c)) *(volatile int *)0 = 0
#define new(a, t, n) (t *)alloc(a, sizeof(t), _Alignof(t), n)
@skeeto
skeeto / example.c
Last active April 7, 2024 14:04
x86-64 Linux buffered "hello world"
// x86-64 Linux buffered "hello world"
// $ cc example.c && ./a.out
// Ref: https://old.reddit.com/r/C_Programming/comments/1bxvs3u
// Ref: https://thecoder08.github.io/hello-world.html
// Ref: https://nullprogram.com/blog/2023/02/13/
#include <stddef.h>
#include <string.h>
ptrdiff_t xwrite(int fd, void *buf, ptrdiff_t len)
{
@skeeto
skeeto / persona.c
Last active March 25, 2024 06:51
Playing around with a little database
// $ cc -o persona persona.c
// $ ./persona <test.txt
// Ref: https://old.reddit.com/r/C_Programming/comments/1bmfb7p
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#define assert(c) while (!(c)) *(volatile int *)0 = 0
#define countof(a) (ptrdiff_t)(sizeof(a) / sizeof(*(a)))
#define new(a, t, n) (t *)alloc(a, sizeof(t), _Alignof(t), n)
@skeeto
skeeto / pathmap_test.go
Created March 12, 2024 16:38
String slices as keys
// Ref: https://old.reddit.com/r/golang/comments/1bcfe95/slice_as_map_key_in_go/
package main
import (
"encoding/binary"
"fmt"
"math/rand"
"slices"
"strings"
"testing"
// $ cc -o graph graph.c
// $ ./a.out
// Ref: https://old.reddit.com/r/roguelikedev/comments/1b7pa9w/
#include <stdio.h>
static int rand31(unsigned long long *s)
{
*s = *s*0x3243f6a8885a308dU + 1;
return (int)(*s >> 33);
}
@skeeto
skeeto / demo.c
Created February 13, 2024 15:12
WriteProcessMemory demo
// WriteProcessMemory demo
// $ cc -nostartfiles -o demo.exe demo.c
// $ cl demo.c /link /subsystem:console kernel32.lib
// This is free and unencumbered software released into the public domain.
#include <stddef.h>
#define countof(a) (ptrdiff_t)(sizeof(a) / sizeof(*(a)))
typedef unsigned char u8;
typedef signed int b32;
@skeeto
skeeto / hotpatch.c
Last active February 7, 2024 20:54
Function hotpatch example
// Function hotpatch example
// $ gcc -nostartfiles -o hotpatch.exe hotpatch.c
// $ clang -nostdlib -Wl,/subsystem:console -o hotpatch.exe hotpatch.c -lkernel32
// This is free and unencumbered software released into the public domain.
#include <stddef.h>
#include <stdint.h>
#define W32 __attribute((dllimport, stdcall))
W32 void *CreateThread(void *, size_t, void *, void *, int, int *);
W32 int FlushInstructionCache(void *, void *, size_t);
W32 void *GetStdHandle(int);
@skeeto
skeeto / demo.c
Created February 2, 2024 22:44
arena stuff
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define assert(c) while (!(c)) *(volatile int *)0 = 0
#define countof(a) (ptrdiff_t)(sizeof(a) / sizeof(*(a)))
#define new(a, t, n) (t *)alloc(a, sizeof(t), n)
#define S(s) (str){(char *)s, countof(s)-1}