1.1 --- a/tests/dstest_file_client.cc Sun Jul 25 17:14:53 2021 +0200
1.2 +++ b/tests/dstest_file_client.cc Sun Jul 25 23:18:39 2021 +0200
1.3 @@ -137,16 +137,36 @@
1.4 {
1.5 if (argc < 2)
1.6 {
1.7 - printf("Need a filename.\n");
1.8 + printf("Need a filename and an optional user identifier (if used with a filesystem).\n");
1.9 return 1;
1.10 }
1.11
1.12 char *filename = argv[1];
1.13 + sys_uid_t uid = argc > 2 ? atoi(argv[2]) : 0;
1.14 + file_t *file1, *file2;
1.15
1.16 - /* Invoke the open function to receive each file reference. */
1.17 + /* With a user, open a user-specific file opener. */
1.18 +
1.19 + if (uid)
1.20 + {
1.21 + l4_cap_idx_t opener = client_open_for_user(uid, uid, 0022);
1.22
1.23 - file_t *file1 = client_open(filename, O_RDWR | O_CREAT);
1.24 - file_t *file2 = client_open(filename, O_RDWR);
1.25 + if (l4_is_invalid_cap(opener))
1.26 + {
1.27 + printf("Could not obtain opener for file.\n");
1.28 + return 1;
1.29 + }
1.30 +
1.31 + /* Invoke the open method to receive the file reference. */
1.32 +
1.33 + file1 = client_open_using(filename, O_RDWR | O_CREAT, opener);
1.34 + file2 = client_open_using(filename, O_RDWR, opener);
1.35 + }
1.36 + else
1.37 + {
1.38 + file1 = client_open(filename, O_RDWR | O_CREAT);
1.39 + file2 = client_open(filename, O_RDWR);
1.40 + }
1.41
1.42 if ((file1 == NULL) || (file2 == NULL))
1.43 {