[Project_owners] run Shell Script on Mac with nsIProcess
Didier Ernotte
didier at ernotte.com
Thu Sep 6 18:24:21 PDT 2007
Did you try to troubleshout your code a bit ?
Is the gjtemp.sh file created after your have run your code ?
Does FF have authority to write a file in that location ?
Does FF have authority to create a .out file in that location ?
Didier
Gary Johnson <gary.johnson.53 at gmail.com> wrote: /*
I need to unzip files that have characters that FF does not currently support
I am looking at using unix commands to do my work
I am trying to get a shell process to run with nsIProcess on MAC OS 10
with no luck
I create the file gjtemp.sh fine
*/
function runShelScriptonMac(what)
{
// get path to my extensions temp directory created during install
// any existing directory will do
var sstrpart1 = getFFpath('ProfD')
var sstrpart2 = '/extensions/{2ea91495-764f-44ab-9639-dcb810fa1b43}/temp';
// create a Moz file obj to that path
var zipdir = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
Components.utils.reportError("the path " + sstrpart1 + sstrpart2);
zipdir.initWithPath( sstrpart1 + sstrpart2 );
// create a file for Mac script comands
var scriptfile = zipdir.clone();
scriptfile.append("gjtemp.sh");
// you have to write to it
var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
.createInstance(Components.interfaces.nsIFileOutputStream);
fos.init(scriptfile, -1, -1, false);
// shell commands are supposed to start with this
var line = '#!/bin/sh' + "\n";
// set up a change directory line in the script file to make sure I
end up in my temp dir
line += "cd ";
line += "/p ";
line += "\"" + zipdir.path + "\"\n";
fos.write(line, line.length);
// run a test command and write results to a file called test1.out
line = "set > test1.out";
line += "\n";
fos.write(line, line.length);
fos.close();
Components.utils.reportError("the command " + line);
// Get an nsIProcess
var process = Components.classes["@mozilla.org/process/util;1"]
.createInstance(Components.interfaces.nsIProcess);
// Create a file obj for the shell
var sh = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
sh.initWithPath("/bin/sh");
process.init(sh);
// process.init(scriptfile); //this is what you do on windows
var args = [scriptfile.path];
Components.utils.reportError(args);
try
{
process.run(true, args, args.length);
}
catch (err)
{
Components.utils.reportError(err);
}
// where are my results? I must be doing something wrong
}
/*
String Meaning
ProfD profile directory
*/
function getFFpath(what)
{
try
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// get profile directory
var myfileobj = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get(what, Components.interfaces.nsIFile);
return(myfileobj.path);
}
catch(err)
{
Components.utils.reportError(err);
}
return false;
}
--
I hope to be the kind of person my dog thinks I am. :)>
http://mywebpages.comcast.net/adgj/
http://wwwCookDotCom.com
_______________________________________________
Project_owners mailing list
Project_owners at mozdev.org
http://mozdev.org/mailman/listinfo/project_owners
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mozdev.org/pipermail/project_owners/attachments/20070906/9b59de28/attachment.html
More information about the Project_owners
mailing list