Port: Replace dirent->d_type by stat S_ISREG
[babeltrace.git] / tests / lib / test_ctf_writer.c
index 0927a325cc0a06ab7b071b554d760ff5a4e8aa2b..e0236a380e3aa563762354d144ea20096496e0dc 100644 (file)
@@ -19,7 +19,6 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#define _GNU_SOURCE
 #include <babeltrace/ctf-writer/writer.h>
 #include <babeltrace/ctf-writer/clock.h>
 #include <babeltrace/ctf-writer/stream.h>
 #include <babeltrace/ctf-writer/event-fields.h>
 #include <babeltrace/ctf/events.h>
 #include <unistd.h>
-#include <stdlib.h>
+#include <babeltrace/compat/stdlib.h>
 #include <stdio.h>
 #include <sys/utsname.h>
-#include <limits.h>
+#include <babeltrace/compat/limits.h>
 #include <string.h>
 #include <assert.h>
 #include <unistd.h>
 #include <sys/wait.h>
 #include <fcntl.h>
-#include <dirent.h>
+#include <babeltrace/compat/dirent.h>
 #include "tap/tap.h"
+#include <sys/stat.h>
 
 #define METADATA_LINE_SIZE 512
 #define SEQUENCE_TEST_LENGTH 10
@@ -621,7 +621,7 @@ void type_field_tests()
        ok(!enumeration_array_type,
                "Check enumeration types are validated when creating an array");
        ok(bt_ctf_field_type_structure_add_field(composite_structure_type,
-               enumeration_type, "enumeration") == 0,
+               enumeration_type, "enumeration"),
                "Check enumeration types are validated when adding them as structure members");
        enumeration = bt_ctf_field_create(enumeration_type);
        ok(!enumeration,
@@ -715,10 +715,11 @@ int main(int argc, char **argv)
        char *metadata_string;
        struct bt_ctf_writer *writer;
        struct utsname name;
-       char hostname[HOST_NAME_MAX];
+       char hostname[BABELTRACE_HOST_NAME_MAX];
        struct bt_ctf_clock *clock;
        struct bt_ctf_stream_class *stream_class;
        struct bt_ctf_stream *stream1;
+       int ret;
 
        if (argc < 3) {
                printf("Usage: tests-ctf-writer path_to_ctf_parser_test path_to_babeltrace\n");
@@ -727,7 +728,7 @@ int main(int argc, char **argv)
 
        plan_no_plan();
 
-       if (!mkdtemp(trace_path)) {
+       if (!bt_mkdtemp(trace_path)) {
                perror("# perror");
        }
 
@@ -738,7 +739,10 @@ int main(int argc, char **argv)
        ok(writer, "bt_ctf_create succeeds in creating trace with path");
 
        /* Add environment context to the trace */
-       gethostname(hostname, HOST_NAME_MAX);
+       ret = gethostname(hostname, sizeof(hostname));
+       if (ret < 0) {
+               return ret;
+       }
        ok(bt_ctf_writer_add_environment_field(writer, "host", hostname) == 0,
                "Add host (%s) environment field to writer instance",
                hostname);
@@ -752,7 +756,8 @@ int main(int argc, char **argv)
                NULL),
                "bt_ctf_writer_add_environment_field error with NULL field value");
 
-       if (uname(&name)) {
+       /* On Solaris, uname() can return any positive value on success */
+       if (uname(&name) < 0) {
                perror("uname");
                return -1;
        }
@@ -841,8 +846,20 @@ int main(int argc, char **argv)
 
        struct dirent *entry;
        while ((entry = readdir(trace_dir))) {
-               if (entry->d_type == DT_REG) {
-                       unlinkat(dirfd(trace_dir), entry->d_name, 0);
+               struct stat st;
+               char filename[PATH_MAX];
+
+               if (snprintf(filename, sizeof(filename), "%s/%s",
+                                       trace_path, entry->d_name) <= 0) {
+                       continue;
+               }
+
+               if (stat(entry->d_name, &st)) {
+                       continue;
+               }
+
+               if (S_ISREG(st.st_mode)) {
+                       unlinkat(bt_dirfd(trace_dir), entry->d_name, 0);
                }
        }
 
This page took 0.024669 seconds and 4 git commands to generate.