From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/2021 Path: news.gmane.org!not-for-mail From: =?ISO-8859-2?Q?Daniel_Cegie=B3ka?= Newsgroups: gmane.linux.lib.musl.general Subject: Re: funopen() from BSD Date: Sat, 29 Sep 2012 00:34:37 +0200 Message-ID: References: <20120928213501.GI254@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=e89a8f5028be6e04b604cacaaa12 X-Trace: ger.gmane.org 1348871716 9804 80.91.229.3 (28 Sep 2012 22:35:16 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 28 Sep 2012 22:35:16 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-2022-gllmg-musl=m.gmane.org@lists.openwall.com Sat Sep 29 00:35:17 2012 Return-path: Envelope-to: gllmg-musl@plane.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1THj9Q-0002Rg-Dh for gllmg-musl@plane.gmane.org; Sat, 29 Sep 2012 00:35:16 +0200 Original-Received: (qmail 5599 invoked by uid 550); 28 Sep 2012 22:35:11 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 5591 invoked from network); 28 Sep 2012 22:35:10 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=UsiyxoLfX84z3uG+9yDvsNKy8kkHRpmppFZZe7cIH6U=; b=iDkQaXztoDqUFf/stbfee6Y/uImNfvSuld4UU+ErYyBOmd7wW7v6dzEXP7nouUIVDa 1AmZyj4cJcNPHLG5r3QLNgmzXMJnQ2kgAUdB6d6sVdVQe1vZUbH58fXbLDBssip6yS2G /nDl9lEgxlkFrR7RP1PqO46gVL4sajC0ol4VpBqJuJQqquXrgQwG4ymtgorlc9BKEKtD cIeihe46IGzfJtQiSak4Yj5TbGBWZpk/DKCe1bi5VawZRuPKRUvz/F/prIu2gH7Y1aMf MMZ5YELR6IQm3sVvX9ooonvE0H0UcebOv+RPdGSk41lppHw9s8kv+B5X7qAin8MWVXbI ueqQ== In-Reply-To: <20120928213501.GI254@brightrain.aerifal.cx> Xref: news.gmane.org gmane.linux.lib.musl.general:2021 Archived-At: --e89a8f5028be6e04b604cacaaa12 Content-Type: text/plain; charset=ISO-8859-1 2012/9/28 Rich Felker : > A few general comments... > > 1. musl does not support 32-bit file offsets. All of the 32/64 > distinction stuff can be removed. off_t is always 64-bit. I noticed, but I left it for sure. Already cleaned... > 2. The original documentation states that the read/write functions can > call setvbuf on the file to change its buffer. This imposes a huge > restriction on the implementation that's not acceptable to musl. If > that's part of the API, maybe we can look for some kind of workaround > to block attempts to mess with the buffer, but it's hard since legal > buffering changes (i.e. first action after open) should not be > blocked. > > 3. flockfile/funlockfile are not musl functions, they're POSIX. Since > funopen isn't part of plain ISO C, it's allowable to call them from > funopen stuff, but it's going to impose unnecessary locking. The > locking operations you want are FLOCK() and FUNLOCK() macros in > stdio_impl.h. Corrected. And how to fix this piece of code: if ((fp = __sfp()) == NULL) return NULL; if ((c = (funcookie *)malloc(sizeof *c)) == NULL) { __sfp_lock_acquire (); fp->_flags = 0; /* release */ #ifndef __SINGLE_THREAD__ __lock_close_recursive (fp->_lock); #endif __sfp_lock_release (); return NULL; } Did I find in musl some equivalent for these functions? I'm sending a new (clean) version. Daniel > I don't see any reason why funopen can't go in, but a little bit of > motivation for why it's needed would be nice since it is mildly messy. > > Rich --e89a8f5028be6e04b604cacaaa12 Content-Type: text/x-csrc; charset=US-ASCII; name="funopen.c" Content-Disposition: attachment; filename="funopen.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h7nv7kn01 LyogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgQmxha2UKICogUGVybWlzc2lvbiB0byB1c2UsIGNv cHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQogKiBpcyBmcmVlbHkgZ3Jh bnRlZCwgcHJvdmlkZWQgdGhhdCB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAqLwoKI2luY2x1 ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxlcnJuby5oPgojaW5jbHVkZSAic3RkaW9faW1wbC5oIgoK I2RlZmluZSBfX1NSRAkweDAwMDQJCS8qIE9LIHRvIHJlYWQgKi8KI2RlZmluZSBfX1NXUgkweDAw MDgJCS8qIE9LIHRvIHdyaXRlICovCiNkZWZpbmUgX19TUlcJMHgwMDEwCQkvKiBvcGVuIGZvciBy ZWFkaW5nICYgd3JpdGluZyAqLwoKdHlwZWRlZiBpbnQgKCpmdW5yZWFkKSh2b2lkICpfY29va2ll LCBjaGFyICpfYnVmLCBpbnQgX24pOwp0eXBlZGVmIGludCAoKmZ1bndyaXRlKSh2b2lkICpfY29v a2llLCBjb25zdCBjaGFyICpfYnVmLCBpbnQgX24pOwp0eXBlZGVmIG9mZl90ICgqZnVuc2Vlayko dm9pZCAqX2Nvb2tpZSwgb2ZmX3QgX29mZiwgaW50IF93aGVuY2UpOwp0eXBlZGVmIGludCAoKmZ1 bmNsb3NlKSh2b2lkICpfY29va2llKTsKCnR5cGVkZWYgc3RydWN0IGZ1bmNvb2tpZSB7Cgl2b2lk ICpjb29raWU7CglmdW5yZWFkIHJlYWRmbjsKCWZ1bndyaXRlIHdyaXRlZm47CglmdW5zZWVrIHNl ZWtmbjsKCWZ1bmNsb3NlIGNsb3NlZm47Cn0gZnVuY29va2llOwoKc3RhdGljIGludCBmdW5yZWFk ZXIodm9pZCAqY29va2llLCBjaGFyICpidWYsIGludCBuKSwKewoJaW50IHJlc3VsdDsKCWZ1bmNv b2tpZSAqYyA9IChmdW5jb29raWUgKiljb29raWU7CgllcnJubyA9IDA7CglpZiAoKHJlc3VsdCA9 IGMtPnJlYWRmbihjLT5jb29raWUsIGJ1ZiwgbikpIDwgMCAmJiBlcnJubykgcmV0dXJuIDA7Cgly ZXR1cm4gcmVzdWx0Owp9CgpzdGF0aWMgaW50IGZ1bndyaXRlcih2b2lkICpjb29raWUsIGNvbnN0 IGNoYXIgKmJ1ZiwgaW50IG4pCnsKCWludCByZXN1bHQ7CglmdW5jb29raWUgKmMgPSAoZnVuY29v a2llICopY29va2llOwoJZXJybm8gPSAwOwoJaWYgKChyZXN1bHQgPSBjLT53cml0ZWZuKGMtPmNv b2tpZSwgYnVmLCBuKSkgPCAwICYmIGVycm5vKSByZXR1cm4gMDsKCXJldHVybiByZXN1bHQ7Cn0K CnN0YXRpYyBvZmZfdCBmdW5zZWVrZXIodm9pZCAqY29va2llLCBvZmZfdCBvZmYsIGludCB3aGVu Y2UpCnsKCWZ1bmNvb2tpZSAqYyA9IChmdW5jb29raWUgKiljb29raWU7CglvZmY2NF90IHJlc3Vs dDsKCWVycm5vID0gMDsKCWlmICgocmVzdWx0ID0gYy0+c2Vla2ZuKGMtPmNvb2tpZSwgKG9mZl90 KW9mZiwgd2hlbmNlKSkgPCAwICYmIGVycm5vKSByZXR1cm4gMDsKCXJldHVybiByZXN1bHQ7Cn0K CnN0YXRpYyBpbnQgZnVuY2xvc2VyKHZvaWQgKmNvb2tpZSkKewoJaW50IHJlc3VsdCA9IDA7Cglm dW5jb29raWUgKmMgPSAoZnVuY29va2llICopY29va2llOwoJaWYgKGMtPmNsb3NlZm4pIHsKCQll cnJubyA9IDA7CgkJaWYgKChyZXN1bHQgPSBjLT5jbG9zZWZuKGMtPmNvb2tpZSkpIDwgMCAmJiBl cnJubykgcmV0dXJuIDA7Cgl9CglmcmVlKGMpOyAvKiBjaGVjayBpdCBpbiBuZXdsaWIgc3JjIHRv IGJlIHNodXJlICovCglyZXR1cm4gcmVzdWx0Owp9CgpGSUxFICpmdW5vcGVuKGNvbnN0IHZvaWQg KmNvb2tpZSwgZnVucmVhZCByZWFkZm4sIGZ1bndyaXRlIHdyaXRlZm4sCglmdW5zZWVrIHNlZWtm biwgZnVuY2xvc2UgY2xvc2VmbikKewoJRklMRSAqZnA7CglmdW5jb29raWUgKmM7CgoJaWYgKCFy ZWFkZm4gJiYgIXdyaXRlZm4pIHsKCQllcnJubyA9IEVJTlZBTDsKCQlyZXR1cm4gTlVMTDsKCX0K CWlmICgoZnAgPSBfX3NmcCgpKSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKCWlmICgoYyA9IChmdW5j b29raWUgKiltYWxsb2Moc2l6ZW9mICpjKSkgPT0gTlVMTCkgewoJCV9fc2ZwX2xvY2tfYWNxdWly ZSAoKTsKCQlmcC0+X2ZsYWdzID0gMDsJCS8qIHJlbGVhc2UgKi8KI2lmbmRlZiBfX1NJTkdMRV9U SFJFQURfXwoJCV9fbG9ja19jbG9zZV9yZWN1cnNpdmUgKGZwLT5fbG9jayk7CiNlbmRpZgoJCV9f c2ZwX2xvY2tfcmVsZWFzZSAoKTsKCQlyZXR1cm4gTlVMTDsKCX0KCglGTE9DSyhmcCk7CglmcC0+ X2ZpbGUgPSAtMTsKCWMtPmNvb2tpZSA9ICh2b2lkICopY29va2llOyAvKiBjYXN0IGF3YXkgY29u c3QgKi8KCWZwLT5fY29va2llID0gYzsKCWlmIChyZWFkZm4pIHsKCQljLT5yZWFkZm4gPSByZWFk Zm47CgkJZnAtPl9yZWFkID0gZnVucmVhZGVyOwoJCWlmICh3cml0ZWZuKSB7CgkJCWZwLT5fZmxh Z3MgPSBfX1NSVzsKCQkJYy0+d3JpdGVmbiA9IHdyaXRlZm47CgkJCWZwLT5fd3JpdGUgPSBmdW53 cml0ZXI7CgkJfQoJCWVsc2UgewoJCQlmcC0+X2ZsYWdzID0gX19TUkQ7CgkJCWMtPndyaXRlZm4g PSBOVUxMOwoJCQlmcC0+X3dyaXRlID0gTlVMTDsKCQl9Cgl9CgllbHNlIHsKCQlmcC0+X2ZsYWdz ID0gX19TV1I7CgkJYy0+d3JpdGVmbiA9IHdyaXRlZm47CgkJZnAtPl93cml0ZSA9IGZ1bndyaXRl cjsKCQljLT5yZWFkZm4gPSBOVUxMOwoJCWZwLT5fcmVhZCA9IE5VTEw7Cgl9CgljLT5zZWVrZm4g PSBzZWVrZm47CglmcC0+X3NlZWsgPSBzZWVrZm4gPyBmdW5zZWVrZXIgOiBOVUxMOwoJYy0+Y2xv c2VmbiA9IGNsb3NlZm47CglmcC0+X2Nsb3NlID0gZnVuY2xvc2VyOwoJRlVOTE9DSyhmcCk7Cgly ZXR1cm4gZnA7Cn0K --e89a8f5028be6e04b604cacaaa12--