From: Ralph Mason Date: 2001-12-09T05:09:52+09:00 Subject: [ruby-talk:27971] Re: stack overflow (was Ruby IDE?? What about using Eclipse??) While I'm not a Unix bod, what about links? It would seem that a link could easily cause infinite recursion with what you have here. Ralph ----- Original Message ----- From: "Tobias DiPasquale" Newsgroups: vill.ruby-talk To: "ruby-talk ML" Sent: Sunday, December 09, 2001 7:54 AM Subject: [ruby-talk:27964] Re: stack overflow (was Ruby IDE?? What about using Eclipse??) > I forgot to mention that this was on i686-linux version of Ruby 1.6.5. > Thanks > > Tobias DiPasquale wrote: > > > [ruby-talk:27963] stack overflow (was Ruby IDE?? What about using Eclipse??) > > Hi all, > > > > Hearing all about this Eclipse project made me go and pull it down, until > > I realized that I had it already. So I unzipped it, and like a few > > select annoying packages that I get from time to time, it installed > > everything world-writeable. I was so mad that I wrote this Ruby script > > (below) to change all the permissions back to 755/644 depending on the > > file type. However, the following script always ends up erroring out > > (error below). Is it just because the directory is too deep, or is there > > an error in my recursion? Any help would be appreciated. Thanks in advance! > > > > ======================= Code ======================== > > #!/usr/bin/env ruby > > > > def fixPermissions(filename) > > if FileTest.directory?(filename) > > File.chmod(0755, filename) > > printf "%s: changed to 0755\n", filename > > else > > if filename =~ /.sh$/ || filename =~ /.so$/ > > File.chmod(0755, filename) > > printf "%s: changed to 0755\n", filename > > else > > File.chmod(0644, filename) > > printf "%s: changed to 0644\n", filename > > end > > end > > end > > > > def traverseDirectory(files) > > files.each { |aFile| > > if FileTest.directory?(aFile) && (aFile != "." || aFile != "..") > > traverseDirectory(Dir.entries(aFile)) > > puts "Entering directory " + aFile > > else > > fixPermissions(aFile) > > end > > } > > end > > > > if __FILE__ == $0 > > if ARGV.size != 1 > > puts "Usage: permfix " > > exit > > end > > > > if !FileTest.exist? ARGV[0] > > puts "Error: directory " + ARGV[0] + " does not exist!" > > exit > > end > > > > if !FileTest.directory? ARGV[0] > > puts "Error: " + ARGV[0] + " is not a directory!" > > exit > > end > > > > traverseDirectory Dir.entries(ARGV[0]) > > end > > > > ========================= Error ========================= > > [root@localhost home]# ./permfix eclipse > > ./permfix:20:in `traverseDirectory': stack level too deep (SystemStackError) > > from ./permfix:19:in `each' > > from ./permfix:19:in `traverseDirectory' > > from ./permfix:21:in `traverseDirectory' > > from ./permfix:19:in `each' > > from ./permfix:19:in `traverseDirectory' > > from ./permfix:21:in `traverseDirectory' > > from ./permfix:19:in `each' > > from ./permfix:19:in `traverseDirectory' > > ... 3168 levels... > > from ./permfix:21:in `traverseDirectory' > > from ./permfix:19:in `each' > > from ./permfix:19:in `traverseDirectory' > > from ./permfix:45 > > [root@localhost home]# > > > > > > > > -- > Tobias DiPasquale > Solaris System Administrator > Electrical and Computer Engineering Dept. > Villanova University > mailto: anany@ece.vill.edu > tel: 610-519-5109 > >