// 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/public/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_
