| // Copyright 2015 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef SERVICES_FILES_UTIL_H_ | 
 | #define SERVICES_FILES_UTIL_H_ | 
 |  | 
 | #include "mojo/services/files/interfaces/types.mojom.h" | 
 |  | 
 | namespace mojo { | 
 |  | 
 | class String; | 
 |  | 
 | namespace files { | 
 |  | 
 | // Validation functions (typically used to check arguments; they return | 
 | // |Error::OK| if valid, else the standard/recommended error for the validation | 
 | // error): | 
 |  | 
 | // Checks if |path|, which must be non-null, is (looks like) a valid (relative) | 
 | // path. (On failure, returns |Error::INVALID_ARGUMENT| if |path| is not UTF-8, | 
 | // or |Error::PERMISSION_DENIED| if it is not relative.) | 
 | Error IsPathValid(const String& path); | 
 |  | 
 | // Checks if |whence| is a valid (known) |Whence| value. (On failure, returns | 
 | // |Error::UNIMPLEMENTED|.) | 
 | Error IsWhenceValid(Whence whence); | 
 |  | 
 | // Checks if |offset| is a valid file offset (from some point); this is | 
 | // implementation-dependent (typically checking if |offset| fits in an |off_t|). | 
 | // (On failure, returns |Error::OUT_OF_RANGE|.) | 
 | Error IsOffsetValid(int64_t offset); | 
 |  | 
 | // Conversion functions: | 
 |  | 
 | // Converts a standard errno value (|E...|) to an |Error| value. | 
 | Error ErrnoToError(int errno_value); | 
 |  | 
 | // Converts a |Whence| value to a standard whence value (|SEEK_...|). | 
 | int WhenceToStandardWhence(Whence whence); | 
 |  | 
 | // Converts a |Timespec| to a |struct timespec|. If |in| is null, |out->tv_nsec| | 
 | // is set to |UTIME_OMIT|. | 
 | Error TimespecToStandardTimespec(const Timespec* in, struct timespec* out); | 
 |  | 
 | // Converts a |TimespecOrNow| to a |struct timespec|. If |in| is null, | 
 | // |out->tv_nsec| is set to |UTIME_OMIT|; if |in->now| is set, |out->tv_nsec| is | 
 | // set to |UTIME_NOW|. | 
 | Error TimespecOrNowToStandardTimespec(const TimespecOrNow* in, | 
 |                                       struct timespec* out); | 
 |  | 
 | }  // namespace files | 
 | }  // namespace mojo | 
 |  | 
 | #endif  // SERVICES_FILES_UTIL_H_ |