[ic] Usertag return value

Grant emailgrant at gmail.com
Sat Feb 14 18:07:13 UTC 2009


>>>>>>> $return= $image->Write(filename=>'/file/location/'.$name.'_image.jpg')
>>>>>>> or return 0;
>>>>>>> $Tag->log("1: return=$return error=$!");
>>>>>>> $return= chmod(0644,"/file/location/".$name."_image.jpg") or return 0;
>>>>>>> $Tag->log("2: return=$return error=$!");
>>>>> Why not write it like this:
>>>>>
>>>>> return 0
>>>>>   if ! $image->Write(filename=>'/file/location/'.$name.'_image.jpg');
>>>>>
>>>>> return 0
>>>>>   if ! chmod(0644,"/file/location/".$name."_image.jpg");
>>>> I tried this with the same results.  The first 3 commands execute, the
>>>> last 3 commands don't execute, and the usertag exits with '0'.  If I
>>>> remove:
>>>>
>>>> return 0
>>>>   if !
>>>>
>>>> everything executes, but I don't get the '0' in case of failure.
>>> So, you want all commands to execute regardless and the tag to return 0
>>> if any command fails?
>>
>> Thanks Peter, but what I'm after is processing to stop and a return
>> value of 0 in case a command fails.  The usertag executes all the way
>> through unless I set it up to return 0 in case of failure, in which
>> case processing stops halfway through.  I'd also like any error info
>> to be printed to the error.log because my app needs a 1 or 0 returned
>> by the usertag.
>
> Try this then:
>
> command1 or do {
>        ::logError "Error running command1: $!";
>        return 0;
> }
>
> command2 or do {
>        ::logError "Error running command2: $!";
>        return 0;
> }
>
> ...
>
> commandn or do {
>        ::logError "Error running commandn: $!";
>        return 0;
> }

This is weird.  I changed it to:

command or do {
  ::logError "Error running command: $!";
  return 0;
};

and the tag fails with this in error.log:

Error running command:

If I just use the command without the logging or returning 0 it works perfectly.

- Grant



More information about the interchange-users mailing list