Re: [GRASS-dev] Return value from g.copy is one when --overwrite - bug or feature?

2015-11-09 Thread Huidae Cho
r66775 adds a warning for non-vector elements as well.

On Mon, Nov 9, 2015 at 6:20 AM, Glynn Clements 
wrote:

>
> Markus Neteler wrote:
>
> > It should probably not silently fail.
> >
> > The code in question is in
> > lib/manage/do_copy.c
>
> M_do_copy() returns a status. g.copy's main() checks that and uses it
> to set the exit status, but it doesn't generate an error or warning if
> the status is non-zero.
>
> If G_recursive_copy() or M_do_copy() raised an error, that would
> result in the program aborting on the first error; at present, it
> copies as much as it can.
>
> Realistically, g.copy() should be generating the error at the bottom
> of main() if result is non-zero. E.g.
>
> -exit(result);
> +if (result)
> +G_fatal_error(...);
> +return 0;
>
> > and potentially there to be added strerror(errno) as for example in
> > lib/gis/mapset_msc.c
>
> That would require G_recursive_copy() to call G_warning() (with the
> appropriate strerror(errno)) for each failed system call. Either that,
> or G_recursive_copy() would have to generate a "log" of failures so
> that the caller can report them.
>
> --
> Glynn Clements 
>
___
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Re: [GRASS-dev] Return value from g.copy is one when --overwrite - bug or feature?

2015-11-09 Thread Glynn Clements

Markus Neteler wrote:

> It should probably not silently fail.
> 
> The code in question is in
> lib/manage/do_copy.c

M_do_copy() returns a status. g.copy's main() checks that and uses it
to set the exit status, but it doesn't generate an error or warning if
the status is non-zero.

If G_recursive_copy() or M_do_copy() raised an error, that would
result in the program aborting on the first error; at present, it
copies as much as it can.

Realistically, g.copy() should be generating the error at the bottom
of main() if result is non-zero. E.g.

-exit(result);
+if (result)
+G_fatal_error(...);
+return 0;

> and potentially there to be added strerror(errno) as for example in
> lib/gis/mapset_msc.c

That would require G_recursive_copy() to call G_warning() (with the
appropriate strerror(errno)) for each failed system call. Either that,
or G_recursive_copy() would have to generate a "log" of failures so
that the caller can report them.

-- 
Glynn Clements 
___
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Re: [GRASS-dev] Return value from g.copy is one when --overwrite - bug or feature?

2015-11-09 Thread Rainer M Krug
Markus Neteler  writes:

> On Sun, Nov 8, 2015 at 11:22 AM, Rainer M Krug  wrote:
>> Huidae Cho  writes:
>>
>>> Rainer,
>>>
>>> I cannot seem to replicate your issue:
>>>
>>> G srorg6630/tmp ~> g.version
>>> GRASS 7.1.svn (2015)
>>>
>>> G srorg6630/tmp ~> g.list region
>>> tmp
>>> tmp.d.rast.edit.6753
>>> tmp1
>>>
>>> G srorg6630/tmp ~> g.copy region=tmp,tmp1 --overwrite
>>> Copy region definition  to current mapset as 
>>>
>>> G srorg6630/tmp ~> echo $?
>>> 0
>>>
>>> g.copy returns 1 when it cannot either read the source or write to the
>>> target. Please check your permissions on your region files in
>>> LOCATION/MAPSET/windows/.
>>
>> You are correct - they are read only.
>>
>> So the return value is correct - but an error should be raised - or is
>> there a reason why this should silently fail?
>
> It should probably not silently fail.

Absolutely not - this can lead to errors as one assumes that no error
message means that the command was successful - I usually don't check
the return codes when I am working in a terminal.

>
> The code in question is in
> lib/manage/do_copy.c
>
> and potentially there to be added strerror(errno) as for example in
> lib/gis/mapset_msc.c

I don't know the inner workings of GRASS - but it looks like a good place?

On a related note - are the return codes documented somewhere (apart
From the source code)? OK - 0 is evident, but the others? They seem to
have specific meanings in GRASS?

Thanks,

Rainer

>
> ?
>
> Markus

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature
___
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Re: [GRASS-dev] Return value from g.copy is one when --overwrite - bug or feature?

2015-11-08 Thread Rainer M Krug
Huidae Cho  writes:

> Rainer,
>
> I cannot seem to replicate your issue:
>
> G srorg6630/tmp ~> g.version
> GRASS 7.1.svn (2015)
>
> G srorg6630/tmp ~> g.list region
> tmp
> tmp.d.rast.edit.6753
> tmp1
>
> G srorg6630/tmp ~> g.copy region=tmp,tmp1 --overwrite
> Copy region definition  to current mapset as 
>
> G srorg6630/tmp ~> echo $?
> 0
>
> g.copy returns 1 when it cannot either read the source or write to the
> target. Please check your permissions on your region files in
> LOCATION/MAPSET/windows/.

You are correct - they are read only.

So the return value is correct - but an error should be raised - or is
there a reason why this should silently fail?

Cheers,

Rainer

>
> Regards,
> Huidae
>
>
> On Fri, Nov 6, 2015 at 8:21 AM, Rainer M Krug  wrote:
>
>> When copying via g.copy and specifying --overwrite and the target object
>> already exists, the return value is 1 but no error message is returned:
>>
>> ,
>> | simASM:grassAnalysis> g.copy --overwrite region=region1,region2
>> | simASM:grassAnalysis> echo $?
>> | 1
>> | simASM:grassAnalysis>  g.version
>> | GRASS 7.0.1 (2015)
>> | simASM:grassAnalysis>
>> `
>>
>> From http://tldp.org/LDP/abs/html/exit-status.html:
>>
>> ,
>> | A successful command returns a 0, while an unsuccessful one returns a
>> | non-zero value that usually can be interpreted as an error code.
>> `
>>
>> So shouldn't the return value be 0 in this case, as the command did what
>> it was told?
>>
>> Cheers,
>>
>> Rainer
>>
>> --
>> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
>> Biology, UCT), Dipl. Phys. (Germany)
>>
>> Centre of Excellence for Invasion Biology
>> Stellenbosch University
>> South Africa
>>
>> Tel :   +33 - (0)9 53 10 27 44
>> Cell:   +33 - (0)6 85 62 59 98
>> Fax :   +33 - (0)9 58 10 27 44
>>
>> Fax (D):+49 - (0)3 21 21 25 22 44
>>
>> email:  rai...@krugs.de
>>
>> Skype:  RMkrug
>>
>> PGP: 0x0F52F982
>>
>> ___
>> grass-dev mailing list
>> grass-dev@lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/grass-dev
>>

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature
___
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Re: [GRASS-dev] Return value from g.copy is one when --overwrite - bug or feature?

2015-11-08 Thread Markus Neteler
On Sun, Nov 8, 2015 at 11:22 AM, Rainer M Krug  wrote:
> Huidae Cho  writes:
>
>> Rainer,
>>
>> I cannot seem to replicate your issue:
>>
>> G srorg6630/tmp ~> g.version
>> GRASS 7.1.svn (2015)
>>
>> G srorg6630/tmp ~> g.list region
>> tmp
>> tmp.d.rast.edit.6753
>> tmp1
>>
>> G srorg6630/tmp ~> g.copy region=tmp,tmp1 --overwrite
>> Copy region definition  to current mapset as 
>>
>> G srorg6630/tmp ~> echo $?
>> 0
>>
>> g.copy returns 1 when it cannot either read the source or write to the
>> target. Please check your permissions on your region files in
>> LOCATION/MAPSET/windows/.
>
> You are correct - they are read only.
>
> So the return value is correct - but an error should be raised - or is
> there a reason why this should silently fail?

It should probably not silently fail.

The code in question is in
lib/manage/do_copy.c

and potentially there to be added strerror(errno) as for example in
lib/gis/mapset_msc.c

?

Markus
___
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

[GRASS-dev] Return value from g.copy is one when --overwrite - bug or feature?

2015-11-06 Thread Rainer M Krug
When copying via g.copy and specifying --overwrite and the target object
already exists, the return value is 1 but no error message is returned:

,
| simASM:grassAnalysis> g.copy --overwrite region=region1,region2
| simASM:grassAnalysis> echo $?
| 1
| simASM:grassAnalysis>  g.version
| GRASS 7.0.1 (2015)
| simASM:grassAnalysis>
`

From http://tldp.org/LDP/abs/html/exit-status.html:

,
| A successful command returns a 0, while an unsuccessful one returns a
| non-zero value that usually can be interpreted as an error code.
`

So shouldn't the return value be 0 in this case, as the command did what
it was told?

Cheers,

Rainer

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature
___
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Re: [GRASS-dev] Return value from g.copy is one when --overwrite - bug or feature?

2015-11-06 Thread Huidae Cho
Rainer,

I cannot seem to replicate your issue:

G srorg6630/tmp ~> g.version
GRASS 7.1.svn (2015)

G srorg6630/tmp ~> g.list region
tmp
tmp.d.rast.edit.6753
tmp1

G srorg6630/tmp ~> g.copy region=tmp,tmp1 --overwrite
Copy region definition  to current mapset as 

G srorg6630/tmp ~> echo $?
0

g.copy returns 1 when it cannot either read the source or write to the
target. Please check your permissions on your region files in
LOCATION/MAPSET/windows/.

Regards,
Huidae


On Fri, Nov 6, 2015 at 8:21 AM, Rainer M Krug  wrote:

> When copying via g.copy and specifying --overwrite and the target object
> already exists, the return value is 1 but no error message is returned:
>
> ,
> | simASM:grassAnalysis> g.copy --overwrite region=region1,region2
> | simASM:grassAnalysis> echo $?
> | 1
> | simASM:grassAnalysis>  g.version
> | GRASS 7.0.1 (2015)
> | simASM:grassAnalysis>
> `
>
> From http://tldp.org/LDP/abs/html/exit-status.html:
>
> ,
> | A successful command returns a 0, while an unsuccessful one returns a
> | non-zero value that usually can be interpreted as an error code.
> `
>
> So shouldn't the return value be 0 in this case, as the command did what
> it was told?
>
> Cheers,
>
> Rainer
>
> --
> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
> Biology, UCT), Dipl. Phys. (Germany)
>
> Centre of Excellence for Invasion Biology
> Stellenbosch University
> South Africa
>
> Tel :   +33 - (0)9 53 10 27 44
> Cell:   +33 - (0)6 85 62 59 98
> Fax :   +33 - (0)9 58 10 27 44
>
> Fax (D):+49 - (0)3 21 21 25 22 44
>
> email:  rai...@krugs.de
>
> Skype:  RMkrug
>
> PGP: 0x0F52F982
>
> ___
> grass-dev mailing list
> grass-dev@lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-dev
>
___
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev