[openib-general] [PATCH] osm: 'chmod' on Windows

Sasha Khapyorsky sashak at voltaire.com
Sun Nov 26 06:41:53 PST 2006


On 15:22 Sun 26 Nov     , Yevgeny Kliteynik wrote:
> 
> Fixing to match 'chmod' implementation on Windows.
> Note that on Windows 'chmod' there's no such thing 
> as user/group/all permissions - the permissions are 
> aways for 'all'.
> Don't see why this would be a problem in this case,
> but still - worth mentioning.

It is because SA dump file contains privileged information like lists
of subscribed ports.

> --
> Yevgeny
> 
> Signed-off-by:  Yevgeny Kliteynik <kliteyn at dev.mellanox.co.il>
>  
> Index: opensm/osm_sa.c
> ===================================================================
> --- opensm/osm_sa.c	(revision 10161)
> +++ opensm/osm_sa.c	(working copy)
> @@ -70,6 +70,9 @@
>  #include <opensm/osm_multicast.h>
>  #include <opensm/osm_inform.h>
>  #include <opensm/osm_service.h>
> +#ifdef WIN32
> +#include <io.h>
> +#endif /* WIN32 */
>  
>  #define  OSM_SA_INITIAL_TID_VALUE 0xabc
>  
> @@ -569,7 +572,11 @@ opensm_dump_to_file(osm_opensm_t *p_osm,
>  		return -1;
>  	}
>  
> +#ifndef WIN32
>  	chmod(path, S_IRUSR|S_IWUSR);
> +#else
> +	_chmod(path, _S_IREAD|_S_IWRITE);
> +#endif

It would be very nice to not put such unneeded #ifdef(s) around common
sources. You can simply wrap this function in your WIN32 specific
config.h, something like:

#define chmod(a,b) _chmod(a,b)
#define S_IRUSR _S_IREAD
#define S_IWUSR _S_IWRITE

and this should solve this problem.

Sasha




More information about the general mailing list