comparison nspr/pr/src/misc/pripc.c @ 0:1e5118fa0cb1

This is NSS with a Cmake Buildsyste To compile a static NSS library for Windows we've used the Chromium-NSS fork and added a Cmake buildsystem to compile it statically for Windows. See README.chromium for chromium changes and README.trustbridge for our modifications.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 28 Jul 2014 10:47:06 +0200
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:1e5118fa0cb1
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6 /*
7 * File: pripc.c
8 *
9 * Description: functions for IPC support
10 */
11
12 #include "primpl.h"
13
14 #include <string.h>
15
16 /*
17 * A POSIX IPC name must begin with a '/'.
18 * A POSIX IPC name on Solaris cannot contain any '/' except
19 * the required leading '/'.
20 * A POSIX IPC name on HP-UX and OSF1 must be a valid pathname
21 * in the file system.
22 *
23 * The ftok() function for System V IPC requires a valid pathname
24 * in the file system.
25 *
26 * A Win32 IPC name cannot contain '\'.
27 */
28
29 static void _pr_ConvertSemName(char *result)
30 {
31 #ifdef _PR_HAVE_POSIX_SEMAPHORES
32 #if defined(SOLARIS)
33 char *p;
34
35 /* Convert '/' to '_' except for the leading '/' */
36 for (p = result+1; *p; p++) {
37 if (*p == '/') {
38 *p = '_';
39 }
40 }
41 return;
42 #else
43 return;
44 #endif
45 #elif defined(_PR_HAVE_SYSV_SEMAPHORES)
46 return;
47 #elif defined(WIN32)
48 return;
49 #endif
50 }
51
52 static void _pr_ConvertShmName(char *result)
53 {
54 #if defined(PR_HAVE_POSIX_NAMED_SHARED_MEMORY)
55 #if defined(SOLARIS)
56 char *p;
57
58 /* Convert '/' to '_' except for the leading '/' */
59 for (p = result+1; *p; p++) {
60 if (*p == '/') {
61 *p = '_';
62 }
63 }
64 return;
65 #else
66 return;
67 #endif
68 #elif defined(PR_HAVE_SYSV_NAMED_SHARED_MEMORY)
69 return;
70 #elif defined(WIN32)
71 return;
72 #else
73 return;
74 #endif
75 }
76
77 PRStatus _PR_MakeNativeIPCName(
78 const char *name,
79 char *result,
80 PRIntn size,
81 _PRIPCType type)
82 {
83 if (strlen(name) >= (PRSize)size) {
84 PR_SetError(PR_BUFFER_OVERFLOW_ERROR, 0);
85 return PR_FAILURE;
86 }
87 strcpy(result, name);
88 switch (type) {
89 case _PRIPCSem:
90 _pr_ConvertSemName(result);
91 break;
92 case _PRIPCShm:
93 _pr_ConvertShmName(result);
94 break;
95 default:
96 PR_SetError(PR_INVALID_ARGUMENT_ERROR, 0);
97 return PR_FAILURE;
98 }
99 return PR_SUCCESS;
100 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)