Skip to content

Instantly share code, notes, and snippets.

View colematt's full-sized avatar
:shipit:
Secret Squirrel

Matthew Cole colematt

:shipit:
Secret Squirrel
View GitHub Profile
@colematt
colematt / next_pow_2.c
Created April 3, 2024 23:07
[Get the next power of 2 of an unsigned integer] #c
// Assuming 64-bit long
unsigned long np2(unsigned long x) {
--x;
x |= x >> 1;
x |= x >> 2;
x |= x >> 4;
x |= x >> 8;
x |= x >> 16;
x |= x >> 32;
++x;
@colematt
colematt / get_locale.c
Created February 26, 2024 19:03
[Get locale as a string] #c
#include <locale.h>
#include <stdio.h>
int main(int argc, char* argv[]){
setlocale(LC_ALL, "");
printf("LC_ALL: %s\n", setlocale(LC_ALL, NULL));
printf("LC_CTYPE: %s\n", setlocale(LC_CTYPE, NULL));
return 0;
@colematt
colematt / determine-if-a-package-is-installed.sh
Created February 21, 2024 17:26
[Determine if a package is installed] #apt #ubuntu
# Check to see if a package named ansible is installed
if [ "$(dpkg -l | awk '/ansible/ {print }'|wc -l)" -ge 1 ]; then
echo OK
else
echo FAIL
fi
@colematt
colematt / randstr.c
Created February 18, 2024 22:11
[Get a random word from wordnet] #c
// sudo apt update && apt install wordnet-dev
#include <stdio.h>
#include <stdlib.h>
char *pickword(char *file)
{
FILE *fp = fopen(file, "r");
if (!fp) perror(file), exit(1);
fseek(fp, 0, SEEK_END);
long end = ftell(fp);
@colematt
colematt / fix-numeric-limits-llvm-10.0.md
Last active February 14, 2024 18:35
[Fix ‘numeric_limits’ is not a member of ‘std’ error in LLVM 10.0] #llvm

Fix ‘numeric_limits’ is not a member of ‘std’ error in LLVM 10.0

This problem has been verified in both of the LLVM 10.0.0 and 10.0.1 releases' monorepos. The problem and fix is shown for 10.0.1, but the patch can be applied to a 10.0.0 monorepo.

Problem

[3273/3351] Building CXX object utils/.../benchmark.dir/benchmark_register.cc.o
FAILED: utils/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o 
/usr/bin/c++ -DHAVE_POSIX_REGEX -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Dbenchmark_EXPORTS -I/home/matthew/llvm-project-10.0.1/build/utils/benchmark/src -I/home/matthew/llvm-project-10.0.1/llvm/utils/benchmark/src -I/usr/include/libxml2 -I/home/matthew/llvm-project-10.0.1/build/include -I/home/matthew/llvm-project-10.0.1/llvm/include -I/home/matthew/llvm-project-10.0.1/llvm/utils/benchmark/include -I/home/matthew/llvm-project-10.0.1/llvm/utils/benchmark/src/../include -fPIC -fvisibility-inlines-hidden 
@colematt
colematt / print_ctrl_chars.c
Last active February 23, 2024 18:42
[Print Control Characters] #c
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
/* REFERENCES
* Control Block: http://unicode.org/charts/PDF/U0000.pdf
* Control Pictures: http://unicode.org/charts/PDF/U2400.pdf
*/
int main(int argc, char* argv[]) {
@colematt
colematt / connecting-remote-ssh.md
Created January 18, 2024 03:22
[Connecting to Remote by SSH] #ssh #linux #windows #macos
@colematt
colematt / Makefile
Last active December 9, 2023 18:56
[CUnit Test Scaffolding] #c #cunit #testing
CFLAGS=-g -Wall -std=c99
LDFLAGS=
LDLIBS=-lcunit
RMFLAGS=-f
all: basic
.PHONY: clean
clean:
$(RM) $(RMFLAGS) basic
@colematt
colematt / twiddle.c
Created November 20, 2023 17:47
[Generate the next number with a given number of set bits] #c
#include <stdint.h> // uint64_t
#include <stdio.h> // printf
uint64_t twiddle(uint64_t x) {
uint64_t smallest, ripple, new_smallest, ones;
if (x == 0)
return 0;
smallest = (x & -x);
ripple = x + smallest;
@colematt
colematt / llvm-docset.md
Last active December 6, 2023 02:02 — forked from broadwaylamb/llvm-docset.md
How to generate an LLVM docset for Dash

How to generate an LLVM docset for Dash

Prerequisites

brew install swiftdocorg/formulae/docsetutil
sudo ln -s /usr/local/bin/docsetutil /Library/Developer/CommandLineTools/usr/bin/docsetutil
brew install doxygen graphviz