[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