Это не общественное достояние, но Minizip , входящий в состав zlib , соответствует трем другим вашим требованиям. Он также содержит miniunz.c, очень простой пример для последующего архивирования.
Из Стандартные процедуры R5RS :
(expt z1 z2) Возвращает z1 в степени z2. Для z1 0 z1z2 = ez2 журнал z1 0z равно 1, если z = 0, и 0 в противном случае.
Поиск по запросу "ссылка на схему" открывает этот документ.
Ответ - expt
, и я печатаю, потому что StackOverflow не любит слишком короткие ответы.