summaryrefslogtreecommitdiffstats
path: root/longbow/src/LongBow/private/longBow_OpenFile.h
blob: 10756ba5ba720f97e6d334f09ff008b91e050e78 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
 * Copyright (c) 2017 Cisco and/or its affiliates.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * @file longBow_OpenFile.h
 * @ingroup testing
 * @brief LongBow support for files and file descriptors.
 *
 */
#ifndef LongBow_longBow_Files_h
#define LongBow_longBow_Files_h

#include <sys/stat.h>

#include <LongBow/private/longBow_ArrayList.h>

struct longbow_openfile;
/**
 * @typedef LongBowOpenFile
 * @brief A representation of an open file.
 */
typedef struct longbow_openfile LongBowOpenFile;

/**
 * @param [in] fd The file descriptor.
 * @return An allocated LongBowOpenFile instance that must be destroyed via longBowOpenFile_Destroy().
 */
LongBowOpenFile *longBowOpenFile_Create(int fd);

/**
 *
 * @param [in,out] openFilePtr A pointer to a pointer to a valid LongBowOpenFile instance.
 */
void longBowOpenFile_Destroy(LongBowOpenFile **openFilePtr);

/**
 *
 * @param [in] openFile A pointer to a valid LongBowOpenFile instance.
 * @return A nul-terminate C string that must be freed via free(3).
 */
char *longBowOpenFile_ToString(LongBowOpenFile *openFile);

/**
 * Create a list of the currently open files.
 *
 * @return A list of LongBowOpenFile instances for each open file.
 */
LongBowArrayList *longBowOpenFile_CurrentlyOpen(void);

/**
 * Return a nul-terminated C string representing the given `struct stat` pointed to by @p statbuf.
 *
 * @param [in] statbuf A pointer to a valid `struct stat` instance.
 *
 * @return non-NULL A nul-terminated C string that must be deallocated via longBowMemory_Deallocate.
 */
char *longBowOpenFile_StructStatToString(const struct stat *statbuf);
#endif