Skip to content

Instantly share code, notes, and snippets.

@ben-cohen
ben-cohen / shared_mutex.c
Created July 12, 2017 19:25
Mutex in mmap memory shared between processes.
/*
* shared_mutex: Mutex in mmap memory shared between processes.
*
* Ben Cohen, July 2017.
*
* Compile using:
* gcc -o shared_mutex shared_mutex.c -ggdb -Wall -std=c99 -pthread
*
* Two processes are created with an mmap shared memory region
* containing an array of chars and a mutex. The mutex is created with
@ben-cohen
ben-cohen / mouse_motion.py
Created October 7, 2017 08:43
Display "breadcrumb trail" to test mouse motion events
#!/usr/bin/python
#
# Ben Cohen, October 2017.
#
# mouse_motion.py: Display "breadcrumb trail" to test mouse motion events.
#
# Move the mouse and the positions of the motion events will be displayed.
# Clear the canvas by pressing Backspace. Quit by pressing Escape.
import sys
@ben-cohen
ben-cohen / git-post-commit-branch-detached
Last active December 12, 2017 14:01
Git post-commit hook to create a branch automatically when commiting from a detached HEAD
#!/bin/sh
#
# Git post-commit hook to create a branch automatically when commiting from a
# detached HEAD.
#
# Install in your repo as .git/hooks/post-commit and make it executable.
#
# Ben Cohen, December 2017.
set -e
@ben-cohen
ben-cohen / ptrace_without_exec.c
Created May 14, 2018 16:50
Ptrace child process without calling exec()
/*
* ptrace_without_exec: Ptrace child process without calling exec()
*
* Compile using:
* gcc -o ptrace_without_exec ptrace_without_exec.c -ggdb -Wall
*
* Ben Cohen, May 2018.
*/
#include <unistd.h>
@ben-cohen
ben-cohen / roman_pp.py
Last active June 15, 2019 19:19
GDB Python pretty printer for the int datatype to Roman Numerals
#
# GDB Python pretty printer for the int datatype to Roman Numerals
#
# Ben Cohen, June 2019
#
import gdb
# GDB pretty printer for the "int" type
class IntPrinter:
@ben-cohen
ben-cohen / frametest_unwind.py
Created June 15, 2019 19:18
GDB Python unwinder and frame decorator prototype
#
# GDB Python unwinder and frame decorator prototype
#
# This is a very basic demonstration for how to get GDB to unwind the
# "frametest" example crash in https://github.com/ben-cohen/corelibgen and
# apply a frame decorator to the backtrace.
#
# It needs a recent version of gdb and only works on i386 or x86_64.
# You need to manually fill in the PC value of the crash at "XXX" below!
#
@ben-cohen
ben-cohen / fontlist.sh
Created August 23, 2020 17:13
Use XeLaTeX to create a sampler for each of the fonts available to the local system
#!/bin/bash
#
# fontlist.sh: Create a XeLaTeX document giving samples for each of the fonts
# available to the local system from fc-list, and run XeLaTeX on it ignoring
# errors.
#
# Ben Cohen, August 2020.
#
OUTFILE=fontlist.tex
@ben-cohen
ben-cohen / pagenumpics.tex
Created November 10, 2020 19:32
LaTeX document with image instead of page numbers
%
% A LaTeX document where images called img-1.jpg, img-2.jpg, ... are
% displayed in the corner of the page instead of a textual page number.
%
% Ben Cohen, November 2020
%
\documentclass{article}
\usepackage{lipsum}
\usepackage{graphicx}
@ben-cohen
ben-cohen / diffpdf.sh
Last active February 16, 2022 13:56 — forked from brechtm/diffpdf.sh
Page-by-page PDF diff tool
#!/bin/bash
# usage: diffpdf.sh file_1.pdf file_2.pdf
# requirements:
# - ImageMagick
# - Poppler's pdftoppm and pdfinfo tools (works with 0.18.4 and 0.41.0,
# fails with 0.42.0)
# (could be replaced with Ghostscript if speed is
# not important - see commented commands below)
@ben-cohen
ben-cohen / git_check_status.sh
Last active July 29, 2021 16:47
Check whether git is in a special state
#!/bin/bash
#
# git_check_status.sh: check whether git is in a special state
#
# Ben Cohen, July 2021
#
# This script returns failure if the current directory is a git worktree
# that is in a special state - merge, rebase, bisect or detached HEAD - or
# returns success if the worktree is in a normal state, or the current
# directory is not a git worktree.