.. module:: Libc

********************
 C Standard Library
********************

.. function:: malloc(size::Integer) -> Ptr{Void}

   .. Docstring generated from Julia source

   Call ``malloc`` from the C standard library.

.. function:: calloc(num::Integer, size::Integer) -> Ptr{Void}

   .. Docstring generated from Julia source

   Call ``calloc`` from the C standard library.

.. function:: realloc(addr::Ptr, size::Integer) -> Ptr{Void}

   .. Docstring generated from Julia source

   Call ``realloc`` from the C standard library.

   See warning in the documentation for ``free`` regarding only using this on memory originally obtained from ``malloc``\ .

.. function:: free(addr::Ptr)

   .. Docstring generated from Julia source

   Call ``free`` from the C standard library. Only use this on memory obtained from ``malloc``\ , not on pointers retrieved from other C libraries. ``Ptr`` objects obtained from C libraries should be freed by the free functions defined in that library, to avoid assertion failures if multiple ``libc`` libraries exist on the system.

.. function:: errno([code])

   .. Docstring generated from Julia source

   Get the value of the C library's ``errno``\ . If an argument is specified, it is used to set the value of ``errno``\ .

   The value of ``errno`` is only valid immediately after a ``ccall`` to a C library routine that sets it. Specifically, you cannot call ``errno`` at the next prompt in a REPL, because lots of code is executed between prompts.

.. function:: strerror(n=errno())

   .. Docstring generated from Julia source

   Convert a system call error code to a descriptive string

.. function:: GetLastError()

   .. Docstring generated from Julia source

   Call the Win32 ``GetLastError`` function [only available on Windows].

.. function:: FormatMessage(n=GetLastError())

   .. Docstring generated from Julia source

   Convert a Win32 system call error code to a descriptive string [only available on Windows].

.. function:: time(t::TmStruct)

   .. Docstring generated from Julia source

   Converts a ``TmStruct`` struct to a number of seconds since the epoch.

.. function:: strftime([format], time)

   .. Docstring generated from Julia source

   Convert time, given as a number of seconds since the epoch or a ``TmStruct``\ , to a formatted string using the given format. Supported formats are the same as those in the standard C library.

.. function:: strptime([format], timestr)

   .. Docstring generated from Julia source

   Parse a formatted time string into a ``TmStruct`` giving the seconds, minute, hour, date, etc. Supported formats are the same as those in the standard C library. On some platforms, timezones will not be parsed correctly. If the result of this function will be passed to ``time`` to convert it to seconds since the epoch, the ``isdst`` field should be filled in manually. Setting it to ``-1`` will tell the C library to use the current system settings to determine the timezone.

.. function:: TmStruct([seconds])

   .. Docstring generated from Julia source

   Convert a number of seconds since the epoch to broken-down format, with fields ``sec``\ , ``min``\ , ``hour``\ , ``mday``\ , ``month``\ , ``year``\ , ``wday``\ , ``yday``\ , and ``isdst``\ .

.. function:: flush_cstdio()

   .. Docstring generated from Julia source

   Flushes the C ``stdout`` and ``stderr`` streams (which may have been written to by external C code).

.. function:: msync(ptr, len, [flags])

   .. Docstring generated from Julia source

   Forces synchronization of the :func:`mmap`\ ped memory region from ``ptr`` to ``ptr+len``. Flags defaults to ``MS_SYNC``, but can be a combination of ``MS_ASYNC``, ``MS_SYNC``, or ``MS_INVALIDATE``. See your platform man page for specifics. The flags argument is not valid on Windows.

   You may not need to call ``msync``, because synchronization is performed at intervals automatically by the operating system. However, you can call this directly if, for example, you are concerned about losing the result of a long-running calculation.

.. data:: MS_ASYNC

   Enum constant for :func:`msync`. See your platform man page for details. (not available on Windows).

.. data:: MS_SYNC

   Enum constant for :func:`msync`. See your platform man page for details. (not available on Windows).

.. data:: MS_INVALIDATE

   Enum constant for :func:`msync`. See your platform man page for details. (not available on Windows).
