blob: 0f543c74af5953d0c5b455b392a9b830bd159eea [file] [log] [blame]
// 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_