}
int
-stat_segment_connect_r (char *socket_name, stat_client_main_t * sm)
+stat_segment_connect_r (const char *socket_name, stat_client_main_t * sm)
{
int mfd = -1;
int sock;
0)
{
close (sock);
- return -1;
+ return -2;
}
if ((mfd = recv_fd (sock)) < 0)
{
close (sock);
fprintf (stderr, "Receiving file descriptor failed\n");
- return -1;
+ return -3;
}
close (sock);
if (fstat (mfd, &st) == -1)
{
perror ("mmap fstat failed");
- return -1;
+ return -4;
}
if ((memaddr =
mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, mfd, 0)) == MAP_FAILED)
{
perror ("mmap map failed");
- return -1;
+ return -5;
}
sm->memory_size = st.st_size;
}
int
-stat_segment_connect (char *socket_name)
+stat_segment_connect (const char *socket_name)
{
stat_client_main_t *sm = &stat_client_main;
return stat_segment_connect_r (socket_name, sm);
result.error_value = error_base[ep->index];
break;
+ case STAT_DIR_TYPE_NAME_VECTOR:
+ if (ep->offset == 0)
+ return result;
+ uint8_t **name_vector =
+ stat_segment_pointer (sm->shared_header, ep->offset);
+ result.name_vector = vec_dup (name_vector);
+ offset_vector =
+ stat_segment_pointer (sm->shared_header, ep->offset_vector);
+ for (i = 0; i < vec_len (name_vector); i++)
+ {
+ if (offset_vector[i])
+ {
+ u8 *name =
+ stat_segment_pointer (sm->shared_header, offset_vector[i]);
+ result.name_vector[i] = vec_dup (name);
+ }
+ else
+ result.name_vector[i] = 0;
+ }
+ break;
+
default:
- fprintf (stderr, "Unknown type: %d", ep->type);
+ fprintf (stderr, "Unknown type: %d\n", ep->type);
}
return result;
}
int i, j;
for (i = 0; i < vec_len (patterns); i++)
{
- int rv = regcomp (®ex[i], (char *) patterns[i], 0);
+ int rv = regcomp (®ex[i], (const char *) patterns[i], 0);
if (rv)
{
fprintf (stderr, "Could not compile regex %s\n", patterns[i]);
}
/* Create a vector from a string (or add to existing) */
-u8 **
-stat_segment_string_vector (u8 ** string_vector, char *string)
+uint8_t **
+stat_segment_string_vector (uint8_t ** string_vector, const char *string)
{
- u8 *name = 0;
- name = vec_dup ((u8 *) string);
- vec_add1 (string_vector, (u8 *) name);
+ uint8_t *name = 0;
+ size_t len = strlen (string);
+
+ vec_validate_init_c_string (name, string, len);
+ vec_add1 (string_vector, name);
return string_vector;
}