From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 29 May 2003 11:48:12 +0400 From: Stanislav Ievlev To: sisyphus@altlinux.ru Subject: Re: [sisyphus] u: xrcode-1.0-alt1, part II Message-ID: <20030529074812.GG23462@basalt.office.altlinux.org> References: <20030526194600.GK18884@osdn.org.ua> <20030526195816.GA15137@basalt.office.altlinux.org> <20030527094814.GX18884@osdn.org.ua> <20030527100533.GC23993@basalt.office.altlinux.org> <20030528141536.GN18884@osdn.org.ua> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20030528141536.GN18884@osdn.org.ua> Sender: sisyphus-admin@altlinux.ru Errors-To: sisyphus-admin@altlinux.ru X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.0.9 Precedence: bulk Reply-To: sisyphus@altlinux.ru List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Archived-At: List-Archive: On Wed, May 28, 2003 at 05:15:36PM +0300, Michael Shigorin wrote: > On Tue, May 27, 2003 at 02:05:33PM +0400, Dmitry V. Levin wrote: > > > Это по принципу "так, а теперь кто отточил умение до автоматизма > > > -- подскажите, что с _этим_ делать". Потому что в 22:46:00 меня, > > > очевидно, более чем на прогулку по manpages не хватило. > > Уже сочинил примерно такое: > > - strcpy(temp, (char *) tmpnam(NULL)); > - else > - strcpy(temp, argv[3]); > - out = fopen(temp, "w"); > + out = mkstemp(temp); > + else { > + strncpy(temp, argv[3], sizeof(temp)); > + out = fopen(temp, "w"); > + } Что-то тут совсем не то. Зачем изобретать велосипед, не проще ли посмотреть в Сизифе. Вот вариант который используется 99% программ: { + int fd; + const char suffix[] = ".XXXXXX"; + const char *tmp_dir = getenv("TMPDIR")?:"/tmp"; + unsigned tmp_len = strlen( tmp_dir ); + unsigned prog_len = strlen( __progname ); + char tmpbuf[ tmp_len + prog_len + sizeof(suffix) + 1 ]; + + memcpy( tmpbuf, tmp_dir, tmp_len ); + tmpbuf[ tmp_len ] = '/'; + memcpy( tmpbuf + tmp_len + 1, __progname, prog_len ); + memcpy( tmpbuf + tmp_len + prog_len + 1, suffix, sizeof(suffix) ); + + fd = mkstemp(tmpbuf); > > По результатам собрал, проверил и сейчас залью "более другой" > xrcode-1.0-alt1. > > > > Это раз. Два -- IMO это minor/major, но никак не block bug. > > Любое использование tmpnam(3)&Co есть block bug, если только я > > не сказал обратного. > > В docs, пожалуйста. Вместе с определением "&Co". > > > block - это значит, что доступ в дистрибутив закрыт. > > Я перестаю верить в эту шкалу. Почему -- уже высказал. > > > > Три -- если применять боцманские методы к достаточно > > > contrib-пакетам, то я сейчас опять вспомню via686 >;-E > > -- > ---- WBR, Michael Shigorin > ------ Linux.Kiev http://www.linux.kiev.ua/