Coverage Report

Created: 2025-07-01 06:46

/src/FreeRDP/libfreerdp/core/state.c
Line
Count
Source (jump to first uncovered line)
1
/**
2
 * FreeRDP: A Remote Desktop Protocol Implementation
3
 *
4
 * RDP state machine types and helper functions
5
 *
6
 * Copyright 2022 Armin Novak <anovak@thincast.com>
7
 * Copyright 2022 Thincast Technologies GmbH
8
 *
9
 * Licensed under the Apache License, Version 2.0 (the "License");
10
 * you may not use this file except in compliance with the License.
11
 * You may obtain a copy of the License at
12
 *
13
 *     http://www.apache.org/licenses/LICENSE-2.0
14
 *
15
 * Unless required by applicable law or agreed to in writing, software
16
 * distributed under the License is distributed on an "AS IS" BASIS,
17
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
 * See the License for the specific language governing permissions and
19
 * limitations under the License.
20
 */
21
22
#include "state.h"
23
24
#include <winpr/string.h>
25
26
BOOL state_run_failed(state_run_t status)
27
0
{
28
0
  switch (status)
29
0
  {
30
0
    case STATE_RUN_FAILED:
31
0
    case STATE_RUN_QUIT_SESSION:
32
0
      return TRUE;
33
0
    default:
34
0
      return FALSE;
35
0
  }
36
0
}
37
38
BOOL state_run_success(state_run_t status)
39
0
{
40
0
  if (status == STATE_RUN_CONTINUE)
41
0
    return TRUE;
42
0
  return status >= STATE_RUN_SUCCESS;
43
0
}
44
45
const char* state_run_result_string(state_run_t status, char* buffer, size_t buffersize)
46
0
{
47
0
  const char* name = NULL;
48
49
0
  switch (status)
50
0
  {
51
0
    case STATE_RUN_ACTIVE:
52
0
      name = "STATE_RUN_ACTIVE";
53
0
      break;
54
0
    case STATE_RUN_REDIRECT:
55
0
      name = "STATE_RUN_REDIRECT";
56
0
      break;
57
0
    case STATE_RUN_SUCCESS:
58
0
      name = "STATE_RUN_SUCCESS";
59
0
      break;
60
0
    case STATE_RUN_FAILED:
61
0
      name = "STATE_RUN_FAILED";
62
0
      break;
63
0
    case STATE_RUN_QUIT_SESSION:
64
0
      name = "STATE_RUN_QUIT_SESSION";
65
0
      break;
66
0
    case STATE_RUN_TRY_AGAIN:
67
0
      name = "STATE_RUN_TRY_AGAIN";
68
0
      break;
69
0
    case STATE_RUN_CONTINUE:
70
0
      name = "STATE_RUN_CONTINUE";
71
0
      break;
72
0
    default:
73
0
      name = "STATE_RUN_UNKNOWN";
74
0
      break;
75
0
  }
76
77
0
  (void)_snprintf(buffer, buffersize, "%s [%d]", name, status);
78
0
  return buffer;
79
0
}
80
81
BOOL state_run_continue(state_run_t status)
82
0
{
83
0
  return (status == STATE_RUN_TRY_AGAIN) || (status == STATE_RUN_CONTINUE) ||
84
0
         (status == STATE_RUN_ACTIVE);
85
0
}