From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from phicode.de ([136.243.147.240]) by ur; Thu May 4 12:02:23 EDT 2017 Comment: DomainKeys? See http://domainkeys.sourceforge.net/ DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=phicode.de; b=tMi2CaDpZXR1tjlAmyIxgnr7Zvu3PCGVSuFEr+K6V9SpjtbLxHWg6eDQzXvOo1rJEfqbwBH71R1gRuVTEsTmLBhgYO0/B0Re11b1soH/XWxxlsuduS8wk7Je5sC6l+MjjJxNPv9wwbbq3eXexShASqnxJRNGdwMX2pdxxoCt4i4=; h=Received:Received:Date:From:To:Subject:Message-ID:User-Agent:MIME-Version:Content-Type; DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=phicode.de; h=date:from:to :subject:message-id:mime-version:content-type; s=default; bh=dod ZA0Vds3/2vtPKzlZyZAbSqI4=; b=EjRcHFoKzkGWG5ic4UUyPeEcXnw9hC2ep2Q QOgLiD8cNJOMhcqx2rewfzDJIhYdFS57HLifl4iUFoMQ6TBEU08nzVylEwS6+ovo VJv+BsJuoUYZT3MeAkhZJoFIZw6f/Ew8dckzH77stDzyvRdM7gxoth6mwqJud35h dDidpbY8= Received: (qmail 17465 invoked from network); 4 May 2017 16:02:20 -0000 Received: from localhost (127.0.0.1) by localhost with SMTP; 4 May 2017 16:02:20 -0000 Date: Thu, 4 May 2017 18:02:19 +0200 (CEST) From: Julius Schmidt To: 9front@9front.org Subject: bio io functions Message-ID: User-Agent: Alpine 2.00 (LNX 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-209129325-2091119621-1493913740=:9667" List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: lifecycle storage just-in-time control This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---209129325-2091119621-1493913740=:9667 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII I would like to change bio to do all I/O through a user replaceable function. The attached patch does just that, adding a new function Biofn() to register such a function, which replaces read/write. Main uses I have in mind: 1. Allow programs to flush output buffers before stalling for more input, which would most likely be activated with a command line flag. 2. Use bio with things that are not file descriptors. 3. Apply filters to input/outputs (arguably could also be done with pipes). 4. Use bio with ioprocs. ---209129325-2091119621-1493913740=:9667 Content-Type: TEXT/x-diff; name=bio.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=bio.patch ZGlmZiAtciAzNjMxNWViOTY0N2Mgc3lzL2luY2x1ZGUvYmlvLmgNCi0tLSBh L3N5cy9pbmNsdWRlL2Jpby5oCVR1ZSBNYXkgMDIgMDQ6MDc6MjEgMjAxNyAr MDIwMA0KKysrIGIvc3lzL2luY2x1ZGUvYmlvLmgJVGh1IE1heSAwNCAxNTo1 MDoxNSAyMDE3ICswMDAwDQpAQCAtMzMsNiArMzMsNyBAQA0KIAl1Y2hhcioJ ZWJ1ZjsJCS8qIHBvaW50ZXIgdG8gZW5kIG9mIGJ1ZmZlciAqLw0KIAl1Y2hh cioJZ2J1ZjsJCS8qIHBvaW50ZXIgdG8gZ29vZCBkYXRhIGluIGJ1ZiAqLw0K IAl2b2lkCSgqZXJyb3JmKShjaGFyICopOwkvKiBjYWxsZWQgb24gZXJyb3Ig aWYgbm90IG5pbCAqLw0KKwlpbnQJKCppb2YpKEJpb2J1ZmhkciosIHZvaWQg KiwgbG9uZyk7CS8qIGNhbGxlZCB0byBkbyBpL28gKi8NCiB9Ow0KIA0KIHN0 cnVjdAlCaW9idWYNCkBAIC03NCw2ICs3NSw3IEBADQogbG9uZwlCd3JpdGUo QmlvYnVmaGRyKiwgdm9pZCosIGxvbmcpOw0KIHZvaWQJQmxldGhhbChCaW9i dWZoZHIqLCB2b2lkKCopKGNoYXIqKSk7DQogdm9pZAlCZXJyb3IoQmlvYnVm aGRyKiwgY2hhciosIC4uLik7DQordm9pZAlCaW9mbihCaW9idWZoZHIqLCBp bnQoKikoQmlvYnVmaGRyKiwgdm9pZCosIGxvbmcpKTsNCiANCiAjcHJhZ21h CXZhcmFyZ2NrCWFyZ3BvcwlCcHJpbnQJMg0KICNwcmFnbWEJdmFyYXJnY2sJ YXJncG9zCUJlcnJvcgkyDQpkaWZmIC1yIDM2MzE1ZWI5NjQ3YyBzeXMvc3Jj L2xpYmJpby9iZmx1c2guYw0KLS0tIGEvc3lzL3NyYy9saWJiaW8vYmZsdXNo LmMJVHVlIE1heSAwMiAwNDowNzoyMSAyMDE3ICswMjAwDQorKysgYi9zeXMv c3JjL2xpYmJpby9iZmx1c2guYwlUaHUgTWF5IDA0IDE1OjUwOjE1IDIwMTcg KzAwMDANCkBAIC0xMiw3ICsxMiw3IEBADQogCQluID0gYnAtPmJzaXplK2Jw LT5vY291bnQ7DQogCQlpZihuID09IDApDQogCQkJcmV0dXJuIDA7DQotCQlj ID0gd3JpdGUoYnAtPmZpZCwgYnAtPmJidWYsIG4pOw0KKwkJYyA9IGJwLT5p b2YoYnAsIGJwLT5iYnVmLCBuKTsNCiAJCWlmKG4gPT0gYykgew0KIAkJCWJw LT5vZmZzZXQgKz0gbjsNCiAJCQlicC0+b2NvdW50ID0gLWJwLT5ic2l6ZTsN CmRpZmYgLXIgMzYzMTVlYjk2NDdjIHN5cy9zcmMvbGliYmlvL2JnZXRjLmMN Ci0tLSBhL3N5cy9zcmMvbGliYmlvL2JnZXRjLmMJVHVlIE1heSAwMiAwNDow NzoyMSAyMDE3ICswMjAwDQorKysgYi9zeXMvc3JjL2xpYmJpby9iZ2V0Yy5j CVRodSBNYXkgMDQgMTU6NTA6MTUgMjAxNyArMDAwMA0KQEAgLTI0LDcgKzI0 LDcgQEANCiAJICogYnVmZmVyIHRvIGFsbG93IHRoYXQgbWFueSB1bmdldHMu DQogCSAqLw0KIAltZW1tb3ZlKGJwLT5iYnVmLUJ1bmdldHNpemUsIGJwLT5l YnVmLUJ1bmdldHNpemUsIEJ1bmdldHNpemUpOw0KLQlpID0gcmVhZChicC0+ ZmlkLCBicC0+YmJ1ZiwgYnAtPmJzaXplKTsNCisJaSA9IGJwLT5pb2YoYnAs IGJwLT5iYnVmLCBicC0+YnNpemUpOw0KIAlicC0+Z2J1ZiA9IGJwLT5iYnVm Ow0KIAlpZihpIDw9IDApIHsNCiAJCWJwLT5zdGF0ZSA9IEJyYWN0ZW9mOw0K ZGlmZiAtciAzNjMxNWViOTY0N2Mgc3lzL3NyYy9saWJiaW8vYmluaXQuYw0K LS0tIGEvc3lzL3NyYy9saWJiaW8vYmluaXQuYwlUdWUgTWF5IDAyIDA0OjA3 OjIxIDIwMTcgKzAyMDANCisrKyBiL3N5cy9zcmMvbGliYmlvL2Jpbml0LmMJ VGh1IE1heSAwNCAxNTo1MDoxNSAyMDE3ICswMDAwDQpAQCAtNTAsNiArNTAs MTggQEANCiAJfQ0KIH0NCiANCitzdGF0aWMgaW50DQorYmlvcmVhZChCaW9i dWZoZHIgKmJwLCB2b2lkICp2LCBsb25nIG4pDQorew0KKwlyZXR1cm4gcmVh ZChicC0+ZmlkLCB2LCBuKTsNCit9DQorDQorc3RhdGljIGludA0KK2Jpb3dy aXRlKEJpb2J1ZmhkciAqYnAsIHZvaWQgKnYsIGxvbmcgbikNCit7DQorCXJl dHVybiB3cml0ZShicC0+ZmlkLCB2LCBuKTsNCit9DQorDQogaW50DQogQmlu aXRzKEJpb2J1ZmhkciAqYnAsIGludCBmLCBpbnQgbW9kZSwgdWNoYXIgKnAs IGludCBzaXplKQ0KIHsNCkBAIC02NCwxMiArNzYsMTQgQEANCiAJY2FzZSBP UkVBRDoNCiAJCWJwLT5zdGF0ZSA9IEJyYWN0aXZlOw0KIAkJYnAtPm9jb3Vu dCA9IDA7DQorCQlicC0+aW9mID0gYmlvcmVhZDsNCiAJCWJyZWFrOw0KIA0K IAljYXNlIE9XUklURToNCiAJCWluc3RhbGwoYnApOw0KIAkJYnAtPnN0YXRl ID0gQndhY3RpdmU7DQogCQlicC0+b2NvdW50ID0gLXNpemU7DQorCQlicC0+ aW9mID0gYmlvd3JpdGU7DQogCQlicmVhazsNCiAJfQ0KIAlicC0+YmJ1ZiA9 IHA7DQpAQCAtMTU0LDMgKzE2OCwxNSBAQA0KIAkvKiBvdGhlcndpc2Ugb3Bl bmVkIHdpdGggQmluaXQocykgKi8NCiAJcmV0dXJuIHI7DQogfQ0KKw0KK3Zv aWQNCitCaW9mbihCaW9idWZoZHIgKmJwLCBpbnQgKCpmKShCaW9idWZoZHIg Kiwgdm9pZCAqLCBsb25nKSkNCit7DQorCWlmKGYgPT0gbmlsKQ0KKwkJaWYo YnAtPnN0YXRlID09IEJ3YWN0aXZlKQ0KKwkJCWJwLT5pb2YgPSBiaW93cml0 ZTsNCisJCWVsc2UNCisJCQlicC0+aW9mID0gYmlvcmVhZDsNCisJZWxzZQ0K KwkJYnAtPmlvZiA9IGY7DQorfQ0KZGlmZiAtciAzNjMxNWViOTY0N2Mgc3lz L3NyYy9saWJiaW8vYnJkbGluZS5jDQotLS0gYS9zeXMvc3JjL2xpYmJpby9i cmRsaW5lLmMJVHVlIE1heSAwMiAwNDowNzoyMSAyMDE3ICswMjAwDQorKysg Yi9zeXMvc3JjL2xpYmJpby9icmRsaW5lLmMJVGh1IE1heSAwNCAxNTo1MDox NSAyMDE3ICswMDAwDQpAQCAtNDYsNyArNDYsNyBAQA0KIAkgKi8NCiAJaXAg PSAoY2hhciopYnAtPmJidWYgKyBpOw0KIAl3aGlsZShpIDwgYnAtPmJzaXpl KSB7DQotCQlqID0gcmVhZChicC0+ZmlkLCBpcCwgYnAtPmJzaXplLWkpOw0K KwkJaiA9IGJwLT5pb2YoYnAsIGlwLCBicC0+YnNpemUtaSk7DQogCQlpZihq IDwgMCkNCiAJCQlCZXJyb3IoYnAsICJyZWFkIGVycm9yOiAlciIpOw0KIAkJ aWYoaiA8PSAwKSB7DQpkaWZmIC1yIDM2MzE1ZWI5NjQ3YyBzeXMvc3JjL2xp YmJpby9icmRzdHIuYw0KLS0tIGEvc3lzL3NyYy9saWJiaW8vYnJkc3RyLmMJ VHVlIE1heSAwMiAwNDowNzoyMSAyMDE3ICswMjAwDQorKysgYi9zeXMvc3Jj L2xpYmJpby9icmRzdHIuYwlUaHUgTWF5IDA0IDE1OjUwOjE1IDIwMTcgKzAw MDANCkBAIC02OSw3ICs2OSw3IEBADQogCWZvcig7Oyl7DQogCQlpcCA9IChj aGFyKilicC0+YmJ1ZiArIGk7DQogCQl3aGlsZShpIDwgYnAtPmJzaXplKSB7 DQotCQkJaiA9IHJlYWQoYnAtPmZpZCwgaXAsIGJwLT5ic2l6ZS1pKTsNCisJ CQlqID0gYnAtPmlvZihicCwgaXAsIGJwLT5ic2l6ZS1pKTsNCiAJCQlpZihq IDwgMCkNCiAJCQkJQmVycm9yKGJwLCAicmVhZCBlcnJvcjogJXIiKTsNCiAJ CQlpZihqIDw9IDAgJiYgaSA9PSAwKQ0KZGlmZiAtciAzNjMxNWViOTY0N2Mg c3lzL3NyYy9saWJiaW8vYnJlYWQuYw0KLS0tIGEvc3lzL3NyYy9saWJiaW8v YnJlYWQuYwlUdWUgTWF5IDAyIDA0OjA3OjIxIDIwMTcgKzAyMDANCisrKyBi L3N5cy9zcmMvbGliYmlvL2JyZWFkLmMJVGh1IE1heSAwNCAxNTo1MDoxNSAy MDE3ICswMDAwDQpAQCAtMjAsNyArMjAsNyBAQA0KIAkJaWYobiA9PSAwKSB7 DQogCQkJaWYoYnAtPnN0YXRlICE9IEJyYWN0aXZlKQ0KIAkJCQlicmVhazsN Ci0JCQlpID0gcmVhZChicC0+ZmlkLCBicC0+YmJ1ZiwgYnAtPmJzaXplKTsN CisJCQlpID0gYnAtPmlvZihicCwgYnAtPmJidWYsIGJwLT5ic2l6ZSk7DQog CQkJaWYoaSA8PSAwKSB7DQogCQkJCWJwLT5zdGF0ZSA9IEJyYWN0ZW9mOw0K IAkJCQlpZihpIDwgMCkgew0KZGlmZiAtciAzNjMxNWViOTY0N2Mgc3lzL3Ny Yy9saWJiaW8vYndyaXRlLmMNCi0tLSBhL3N5cy9zcmMvbGliYmlvL2J3cml0 ZS5jCVR1ZSBNYXkgMDIgMDQ6MDc6MjEgMjAxNyArMDIwMA0KKysrIGIvc3lz L3NyYy9saWJiaW8vYndyaXRlLmMJVGh1IE1heSAwNCAxNTo1MDoxNSAyMDE3 ICswMDAwDQpAQCAtMjEsNyArMjEsNyBAQA0KIAkJaWYobiA9PSAwKSB7DQog CQkJaWYoYnAtPnN0YXRlICE9IEJ3YWN0aXZlKQ0KIAkJCQlyZXR1cm4gQmVv ZjsNCi0JCQlpID0gd3JpdGUoYnAtPmZpZCwgYnAtPmJidWYsIGJwLT5ic2l6 ZSk7DQorCQkJaSA9IGJwLT5pb2YoYnAsIGJwLT5iYnVmLCBicC0+YnNpemUp Ow0KIAkJCWlmKGkgIT0gYnAtPmJzaXplKSB7DQogCQkJCWVycnN0cihlcnJi dWYsIHNpemVvZiBlcnJidWYpOw0KIAkJCQlpZihzdHJzdHIoZXJyYnVmLCAi aW50ZXJydXB0IikgPT0gbmlsKSB7DQo= ---209129325-2091119621-1493913740=:9667--