Merge pull request #506 from jdgleaver/libchdr-update
[pcsx_rearmed.git] / deps / crypto / rot-13.c
CommitLineData
ce188d4d 1/*********************************************************************
2* Filename: rot-13.c
3* Author: Brad Conte (brad AT bradconte.com)
4* Copyright:
5* Disclaimer: This code is presented "as is" without any guarantees.
6* Details: Implementation of the ROT-13 encryption algorithm.
7 Algorithm specification can be found here:
8 *
9 This implementation uses little endian byte order.
10*********************************************************************/
11
12/*************************** HEADER FILES ***************************/
13#include <string.h>
14#include "rot-13.h"
15
16/*********************** FUNCTION DEFINITIONS ***********************/
17void rot13(char str[])
18{
19 int case_type, idx, len;
20
21 for (idx = 0, len = strlen(str); idx < len; idx++) {
22 // Only process alphabetic characters.
23 if (str[idx] < 'A' || (str[idx] > 'Z' && str[idx] < 'a') || str[idx] > 'z')
24 continue;
25 // Determine if the char is upper or lower case.
26 if (str[idx] >= 'a')
27 case_type = 'a';
28 else
29 case_type = 'A';
30 // Rotate the char's value, ensuring it doesn't accidentally "fall off" the end.
31 str[idx] = (str[idx] + 13) % (case_type + 26);
32 if (str[idx] < 26)
33 str[idx] += case_type;
34 }
35}