mirror of
https://github.com/reactos/reactos.git
synced 2025-06-07 02:10:36 +00:00
39 lines
995 B
C++
39 lines
995 B
C++
![]() |
//
|
||
|
// cputs.cpp
|
||
|
//
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
// Defines _cputs(), which writes a string directly to the console.
|
||
|
//
|
||
|
#include <conio.h>
|
||
|
#include <corecrt_internal_lowio.h>
|
||
|
|
||
|
// Writes the given string directly to the console. No newline is appended.
|
||
|
// Returns 0 on success; nonzero on failure.
|
||
|
extern "C" int __cdecl _cputs(char const* const string)
|
||
|
{
|
||
|
_VALIDATE_CLEAR_OSSERR_RETURN(string != nullptr, EINVAL, -1);
|
||
|
|
||
|
__acrt_lock(__acrt_conio_lock);
|
||
|
int result = 0;
|
||
|
__try
|
||
|
{
|
||
|
// Write the string directly to the console. Each character is written
|
||
|
// individually, as performance of this function is not considered
|
||
|
// critical.
|
||
|
for (char const* p = string; *p; ++p)
|
||
|
{
|
||
|
if (_putch_nolock(*p) == EOF)
|
||
|
{
|
||
|
result = -1;
|
||
|
__leave;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
__finally
|
||
|
{
|
||
|
__acrt_unlock(__acrt_conio_lock);
|
||
|
}
|
||
|
return result;
|
||
|
}
|