From: ara.t.howard@... Date: 2007-02-17T05:38:02+09:00 Subject: Re: Found a Find.find() bug? ---1400102478-813563835-1171658257=:18133 Content-Type: MULTIPART/MIXED; BOUNDARY="-1400102478-813563835-1171658257=:18133" This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---1400102478-813563835-1171658257=:18133 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; FORMAT=flowed Content-ID: On Sat, 17 Feb 2007, Daniel Berger wrote: > > I'd vote to add support for a :follow option as well - just watch for > infinite loops. Got a patch? > attached. p Find2.find('.') Find2.find('.', :follow => true) do |path| p path end Find2.find2('.', :follow => true) do |path, stat| p [path, stat.mtime] end this on codeforpeople under alib, if you are looking in the future... -a -- we can deny everything, except that we have the possibility of being better. simply reflect on that. - the dalai lama ---1400102478-813563835-1171658257=:18133 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=find2.rb Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME=find2.rb IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0qLSBSdWJ5IC0qLQ0KIyBDb3B5cmlnaHQgKEMpIDE5 OTgsIDIwMDEgIE1vdG95dWtpIEthc2FoYXJhDQojDQojIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIs IG9yIChhdCB5b3VyIG9wdGlvbikNCiMgYW55IGxhdGVyIHZlcnNpb24uDQoj IA0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YN CiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIw0KIw0KIyBUcmF2ZXJzZSBhIGZp bGUgdHJlZSwgcmVwbGFjZW1lbnQgb2YgYGZpbmQucmInLg0KIw0KY2xhc3Mg RmluZDINCiMtLXt7ew0KIw0KIyBDb25zdGF0bnRzDQojDQogIEZJTkQxID0g MQ0KICBGSU5EMiA9IDINCiMNCiMgSW5pdGlhbGl6ZXIuDQojDQogIGRlZiBp bml0aWFsaXplKG1vZGUgPSBGSU5EMSkNCiMtLXt7ew0KICAgIEBtb2RlICAg PSBtb2RlDQogICAgQGRlcHRoICA9IGZhbHNlDQogICAgQGZvbGxvdyA9IGZh bHNlDQogICAgQHhkZXYgICA9IGZhbHNlDQoNCiAgICBAZGlybmFtZV9zdGF0 cyA9IEFycmF5Lm5ldw0KICAgIEBmb3VuZF9maWxlcyA9IEFycmF5Lm5ldw0K ICAgIEB0YXJnZXRfZGV2aWNlID0gMA0KDQogICAgQGhhbmRsZSA9IGxhbWJk YSB7IHxmaWxlLCBzdGF0X3Jlc3VsdCwgYmxvY2t8DQogICAgICBjYXNlIEBt b2RlDQogICAgICAgIHdoZW4gRklORDENCiAgICAgICAgICBibG9jayA/IGJs b2NrLmNhbGwoZmlsZSkgOiBAZm91bmRfZmlsZXMucHVzaChmaWxlKQ0KICAg ICAgICB3aGVuIEZJTkQyDQogICAgICAgICAgYmxvY2sgPyBibG9jay5jYWxs KGZpbGUsIHN0YXRfcmVzdWx0KSA6IEBmb3VuZF9maWxlcy5wdXNoKFtmaWxl LCBzdGF0X3Jlc3VsdF0pDQogICAgICBlbmQNCiAgICB9DQojLS19fX0NCiAg ZW5kDQojDQojIE1ldGhvZHMgZm9yIGFjY2Vzc2luZyBpbnN0YW5jZXMuDQoj DQogIGF0dHIgOmRlcHRoDQogIGF0dHIgOmZvbGxvdw0KICBhdHRyIDp4ZGV2 DQojDQojIEZpbmQgdGhlIGRpcmVjdG9yeSBgZGlybmFtZScuIChwcml2YXRl KQ0KIw0KICBkZWYgZmluZCgqYXJndW1lbnRzLCAmYmxvY2spDQojLS17e3sN CiAgICAjDQogICAgIyBQYXJzZSBvcHRpb25zIGlmIHNwZWNpZmllZC4NCiAg ICAjDQogICAgI2lmIGFyZ3VtZW50c1swXS50eXBlID09IEhhc2gNCiAgICAg ICNwYXJzZV9vcHRpb25zKGFyZ3VtZW50cy5zaGlmdCkNCiAgICAjZW5kDQoN CiMgaGFjaw0KICAgIGFyZ3MgPSBbXQ0KICAgIG9wdHMgPSBbXQ0KICAgIGFy Z3VtZW50cy5lYWNoIGRvIHxhcmd8DQogICAgICBjYXNlIGFyZw0KICAgICAg ICB3aGVuIEhhc2gNCiAgICAgICAgICBvcHRzIDw8IGFyZw0KICAgICAgICBl bHNlDQogICAgICAgICAgYXJncyA8PCBhcmcNCiAgICAgIGVuZA0KICAgIGVu ZA0KICAgIG9wdHMuZWFjaHt8b3B0fCBwYXJzZV9vcHRpb25zIG9wdH0NCiAg ICBmaWxlcyA9IGFyZ3MuZmxhdHRlbi5jb21wYWN0DQoNCiAgICAjDQogICAg IyBJZiBhIGJsb2NrIGlzIG5vdCBnaXZlbiB0byB0aGUgYGZpbmQnIG1ldGhv ZCwgZm91bmQgZmlsZXMgYXJlDQogICAgIyByZWNvcmRlZCBpbiB0aGlzIGFy cmF5Lg0KICAgICMNCiAgICBAZGlybmFtZV9zdGF0cy5jbGVhcg0KICAgIEBm b3VuZF9maWxlcy5jbGVhcg0KDQogICAgIw0KICAgICMgTG9vcCBmb3IgZWFj aCBmaWxlIGluIGBmaWxlcycuDQogICAgIw0KICAgIGZpbGVzLmVhY2ggZG8g fGZpbGV8DQogICAgICBjYXRjaCg6cHJ1bmUpIGRvDQogICAgICBAZGlybmFt ZV9zdGF0cy5jbGVhcg0KDQogICAgICAjDQogICAgICAjIEdldCBgc3RhdCcg b3IgYGxzdGF0JyBvZiBgZmlsZScuDQogICAgICAjDQogICAgICBiZWdpbg0K ICAgICAgICBpZiBAZm9sbG93DQogICAgICAgICAgYmVnaW4NCiAgICAgICAg ICAgIHN0YXRfcmVzdWx0ID0gRmlsZS5zdGF0KGZpbGUpDQogICAgICAgICAg cmVzY3VlIEVycm5vOjpFTk9FTlQsIEVycm5vOjpFQUNDRVMNCiAgICAgICAg ICAgIHN0YXRfcmVzdWx0ID0gRmlsZS5sc3RhdChmaWxlKQ0KICAgICAgICAg IGVuZA0KICAgICAgICBlbHNlDQogICAgICAgICAgc3RhdF9yZXN1bHQgPSBG aWxlLmxzdGF0KGZpbGUpDQogICAgICAgIGVuZA0KICAgICAgcmVzY3VlIEVy cm5vOjpFTk9FTlQsIEVycm5vOjpFQUNDRVMNCiAgICAgICAgbmV4dA0KICAg ICAgZW5kDQoNCiAgICAgICMNCiAgICAgICMgUHVzaCBgZmlsZScgdG8gdGhl IGZvdW5kIHN0YWNrLCBvciB5aWVsZCB3aXRoIGl0LA0KICAgICAgIyBpZiB0 aGUgZGVwdGggZmxhZyBpcyBlbmFibGVkLg0KICAgICAgIw0KICAgICAgQGhh bmRsZVsgZmlsZSwgc3RhdF9yZXN1bHQsIGJsb2NrIF0gaWYgIUBkZXB0aA0K DQogICAgICAjDQogICAgICAjIElmIGBmaWxlJyBpcyBhIGRpcmVjdG9yeSwg ZmluZCBmaWxlcyByZWN1cnNpdmVseS4NCiAgICAgICMNCiAgICAgIGlmIHN0 YXRfcmVzdWx0LmRpcmVjdG9yeT8NCiAgICAgICAgQHhkZXZfZGV2aWNlID0g c3RhdF9yZXN1bHQuZGV2IGlmIEB4ZGV2DQogICAgICAgIEBkaXJuYW1lX3N0 YXRzLnB1c2goc3RhdF9yZXN1bHQpDQogICAgICAgIGZpbmRfZGlyZWN0b3J5 KGZpbGUsIGJsb2NrKQ0KICAgICAgZW5kDQoNCiAgICAgICMNCiAgICAgICMg UHVzaCBgZmlsZScgdG8gdGhlIGZvdW5kIHN0YWNrLCBvciB5aWVsZCB3aXRo IGl0Lg0KICAgICAgIyBpZiB0aGUgZGVwdGggZmxhZyBpcyBkaXNhYmxlZC4N CiAgICAgICMNCiAgICAgIEBoYW5kbGVbIGZpbGUsIHN0YXRfcmVzdWx0LCBi bG9jayBdIGlmIEBkZXB0aA0KDQogICAgICBlbmQNCiAgICBlbmQNCg0KICAg IGlmIGJsb2NrID09IG5pbA0KICAgICAgcmV0dXJuIEBmb3VuZF9maWxlcw0K ICAgIGVsc2UNCiAgICAgIHJldHVybiBuaWwNCiAgICBlbmQNCiMtLX19fQ0K ICBlbmQNCiMNCiMgRmluZCB0aGUgZGlyZWN0b3J5IGBkaXJuYW1lJy4gKHBy aXZhdGUpDQojDQogIGRlZiBmaW5kX2RpcmVjdG9yeShkaXJuYW1lLCBibG9j aykNCiMtLXt7ew0KICAgICMNCiAgICAjIE9wZW4gdGhlIGRpcmVjdG9yeSBg ZGlybmFtZScuDQogICAgIw0KICAgIGJlZ2luDQogICAgICBkaXIgPSBEaXIu b3BlbihkaXJuYW1lKQ0KICAgIHJlc2N1ZQ0KICAgICAgcmV0dXJuDQogICAg ZW5kDQoNCiAgICAjDQogICAgIyBSZWFkIGFsbCBkaXJlY3RvcnkgZW50cmll cyBleGNlcHQgZm9yIGAuJyBhbmQgYC4uJy4NCiAgICAjDQogICAgZW50cmll cyA9IEFycmF5Lm5ldw0KICAgIGxvb3AgZG8NCiAgICAgIGJlZ2luDQogICAg ICBlbnRyeSA9IGRpci5yZWFkDQogICAgICByZXNjdWUNCiAgICAgIGJyZWFr DQogICAgICBlbmQNCiAgICAgIGJyZWFrIGlmIGVudHJ5ID09IG5pbA0KICAg ICAgbmV4dCBpZiBlbnRyeSA9PSAnLicgfHwgZW50cnkgPT0gJy4uJw0KICAg ICAgZW50cmllcy5wdXNoKGVudHJ5KQ0KICAgIGVuZA0KDQogICAgIw0KICAg ICMgQ2xvc2UgYGRpcicuDQogICAgIw0KICAgIGRpci5jbG9zZQ0KDQogICAg Iw0KICAgICMgTG9vcCBmb3IgZWFjaCBlbnRyeSBpbiB0aGlzIGRpcmVjdG9y eS4NCiAgICAjDQogICAgY2F0Y2goOnBydW5lKSBkbw0KICAgICAgZW50cmll cy5lYWNoIGRvIHxlbnRyeXwNCiAgICAgICMNCiAgICAgICMgU2V0IGBlbnRy eV9wYXRoJyB0byB0aGUgZnVsbCBwYXRoIG9mIGBlbnRyeScuDQogICAgICAj DQogICAgICBpZiBkaXJuYW1lWy0xLCAxXSA9PSBGaWxlOjpTZXBhcmF0b3IN CiAgICAgICAgZW50cnlfcGF0aCA9IGRpcm5hbWUgKyBlbnRyeQ0KICAgICAg ZWxzZQ0KICAgICAgICBlbnRyeV9wYXRoID0gZGlybmFtZSArIEZpbGU6OlNl cGFyYXRvciArIGVudHJ5DQogICAgICBlbmQNCg0KICAgICAgIw0KICAgICAg IyBHZXQgYHN0YXQnIG9yIGBsc3RhdCcgb2YgYGVudHJ5X3BhdGgnLg0KICAg ICAgIw0KICAgICAgYmVnaW4NCiAgICAgICAgaWYgQGZvbGxvdw0KICAgICAg ICAgIGJlZ2luDQogICAgICAgICAgICBzdGF0X3Jlc3VsdCA9IEZpbGUuc3Rh dChlbnRyeV9wYXRoKQ0KICAgICAgICAgIHJlc2N1ZSBFcnJubzo6RU5PRU5U LCBFcnJubzo6RUFDQ0VTDQogICAgICAgICAgICBzdGF0X3Jlc3VsdCA9IEZp bGUubHN0YXQoZW50cnlfcGF0aCkNCiAgICAgICAgICBlbmQNCiAgICAgICAg ZWxzZQ0KICAgICAgICAgIHN0YXRfcmVzdWx0ID0gRmlsZS5sc3RhdChlbnRy eV9wYXRoKQ0KICAgICAgICBlbmQNCiAgICAgIHJlc2N1ZSBFcnJubzo6RU5P RU5ULCBFcnJubzo6RUFDQ0VTDQogICAgICAgIG5leHQNCiAgICAgIGVuZA0K DQogICAgICAjDQogICAgICAjIFB1c2ggYGVudHJ5X3BhdGgnIHRvIHRoZSBm b3VuZCBzdGFjaywgb3IgeWllbGQgd2l0aCBpdCwNCiAgICAgICMgaWYgdGhl IGRlcHRoIGZsYWcgaXMgZW5hYmxlZC4NCiAgICAgICMNCg0KICAgICAgQGhh bmRsZVsgZW50cnlfcGF0aCwgc3RhdF9yZXN1bHQsIGJsb2NrIF0gaWYgIUBk ZXB0aA0KDQogICAgICAjDQogICAgICAjIElmIGBlbnRyeV9wYXRoJyBpcyBh IGRpcmVjdG9yeSwgZmluZCByZWN1cnNpdmVseS4NCiAgICAgICMNCiAgICAg IGlmIHN0YXRfcmVzdWx0LmRpcmVjdG9yeT8gXA0KICAgICAgICAmJiAoIUB4 ZGV2IHx8IEB4ZGV2X2RldmljZSA9PSBzdGF0X3Jlc3VsdC5kZXYpIFwNCiAg ICAgICAgJiYgKCFAZm9sbG93IHx8ICF2aXNpdGVkPyhzdGF0X3Jlc3VsdCkp DQogICAgICAgIEBkaXJuYW1lX3N0YXRzLnB1c2goc3RhdF9yZXN1bHQpDQog ICAgICAgIGZpbmRfZGlyZWN0b3J5KGVudHJ5X3BhdGgsIGJsb2NrKQ0KICAg ICAgICBAZGlybmFtZV9zdGF0cy5wb3ANCiAgICAgIGVuZA0KDQogICAgICAj DQogICAgICAjIFB1c2ggYGVudHJ5X3BhdGgnIHRvIHRoZSBmb3VuZCBzdGFj aywgb3IgeWllbGQgd2l0aCBpdCwNCiAgICAgICMgaWYgdGhlIGRlcHRoIGZs YWcgaXMgZGlzYWJsZWQuDQogICAgICAjDQogICAgICBAaGFuZGxlWyBlbnRy eV9wYXRoLCBzdGF0X3Jlc3VsdCwgYmxvY2sgXSBpZiBAZGVwdGgNCg0KICAg ICAgZW5kDQogICAgZW5kDQojLS19fX0NCiAgZW5kDQogIHByaXZhdGUgOmZp bmRfZGlyZWN0b3J5DQojDQojIEZpbmQgdGhlIGRpcmVjdG9yeSBgZGlybmFt ZScuIChjbGFzcyBtZXRob2QpDQojDQogIGRlZiBzZWxmLmZpbmQoKmFyZ3Vt ZW50cywgJmJsb2NrKQ0KICAgIG5ldy5maW5kKCphcmd1bWVudHMsICZibG9j aykNCiAgZW5kDQojDQojIEZpbmQgdGhlIGRpcmVjdG9yeSBgZGlybmFtZScu IChjbGFzcyBtZXRob2QpDQojDQogIGRlZiBzZWxmLmZpbmQyKCphcmd1bWVu dHMsICZibG9jaykNCiAgICBuZXcoRklORDIpLmZpbmQoKmFyZ3VtZW50cywg JmJsb2NrKQ0KICBlbmQNCiMNCiMgUGFyc2Ugb3B0aW9ucy4NCiMNCiAgZGVm IHBhcnNlX29wdGlvbnMob3B0aW9ucykNCiMtLXt7ew0KICAgIHJldHVybiBp ZiBvcHRpb25zID09IG5pbA0KDQogICAgb3B0aW9ucy5lYWNoX3BhaXIgZG8g fGtleSwgdmFsdWV8DQogICAgICBjYXNlICIjeyBrZXkgfSIuc3RyaXAuZG93 bmNhc2UNCiAgICAgICAgd2hlbiAnZGVwdGgnDQogICAgICAgICAgQGRlcHRo ID0gdmFsdWUNCiAgICAgICAgd2hlbiAnZm9sbG93Jw0KICAgICAgICAgIEBm b2xsb3cgPSB2YWx1ZQ0KICAgICAgICB3aGVuICd4ZGV2Jw0KICAgICAgICAg IEB4ZGV2ID0gdmFsdWUNCiAgICAgICAgZWxzZQ0KICAgICAgICAgIHJhaXNl IEFyZ3VtZW50RXJyb3IsICJ1bmtub3duIG9wdGlvbiAtICN7a2V5fSINCiAg ICAgIGVuZA0KICAgIGVuZA0KIy0tfX19DQogIGVuZA0KICBwcml2YXRlIDpw YXJzZV9vcHRpb25zDQojDQojIFBydW5lIHRoZSBjdXJyZW50IHZpc2l0ZWQg ZGlyZWN0b3J5Lg0KIw0KICBkZWYgc2VsZi5wcnVuZQ0KIy0te3t7DQogICAg dGhyb3cgOnBydW5lDQojLS19fX0NCiAgZW5kDQojDQojIERpZCB3ZSB2aXNp dCB0aGUgZGlyZWN0b3J5IHdpdGggdGhlIHJlc291Y2UgYHN0YXQnPyAocHJp dmF0ZSkNCiMNCiAgZGVmIHZpc2l0ZWQ/KHN0YXRfcmVzdWx0KQ0KIy0te3t7 DQogICAgZGV2ID0gc3RhdF9yZXN1bHQuZGV2DQogICAgaW5vID0gc3RhdF9y ZXN1bHQuaW5vDQogICAgQGRpcm5hbWVfc3RhdHMuZWFjaCBkbyB8aXwNCiAg ICAgIHJldHVybiBUUlVFIGlmIGkuZGV2ID09IGRldiAmJiBpLmlubyA9PSBp bm8NCiAgICBlbmQNCiAgICByZXR1cm4gRkFMU0UNCiMtLX19fQ0KICBlbmQN CiAgcHJpdmF0ZSA6dmlzaXRlZD8NCiMtLX19fQ0KZW5kICMgY2xhc3MgRmlu ZDINCmRlZiBGaW5kMigqYSwgJmIpIEZpbmQyLmZpbmQyKCphLCAmYikgZW5k DQo= ---1400102478-813563835-1171658257=:18133-- ---1400102478-813563835-1171658257=:18133--