From 959234ca0e4432fe6d3b8de7465d836f7c5d2bf0 Mon Sep 17 00:00:00 2001 From: zongor Date: Sun, 3 Sep 2023 00:33:26 -0400 Subject: [PATCH] ton of annoying string workaround stuff --- fortran/www/app/main.f90 | 64 ++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 22 deletions(-) diff --git a/fortran/www/app/main.f90 b/fortran/www/app/main.f90 index 30ce081..eab51ed 100644 --- a/fortran/www/app/main.f90 +++ b/fortran/www/app/main.f90 @@ -58,57 +58,77 @@ contains character, dimension(:), allocatable, intent(in) :: request integer, intent(in) :: length - character(len=:), allocatable :: command - character(len=32) :: created - integer :: i, s_u_idx, e_u_idx, s_p_idx, e_p_idx, s_a_idx + integer :: i, j, s_idx, e_idx, username_len, password_len + character(len=24) :: username + character(len=24) :: password + character(len=32) :: created + character(len=8) :: appearance + logical :: start = .false. + character(len=:), allocatable :: command + + j = 1 get_username: do i = 1, length if (request(i) .eq. '=') then - s_u_idx = i + 1 + s_idx = i + 1 + start = .true. end if if (request(i) .eq. '&') then - e_u_idx = i - 1 + e_idx = i - 1 + start = .false. exit get_username end if - end do get_username - ! username = transfer(request(s_idx:e_idx), username) - get_password: do i = e_u_idx + 2, length + if (start) then + username(j:j) = request(i + 1) + j = j + 1 + end if + end do get_username + username_len = j-2 + + j = 1 + get_password: do i = e_idx + 2, length if (request(i) .eq. '=') then - s_p_idx = i + 1 + s_idx = i + 1 + start = .true. end if if (request(i) .eq. '&') then - e_p_idx = i - 1 + e_idx = i - 1 + start = .false. exit get_password end if - end do get_password - ! password = transfer(request(s_idx:e_idx), password) - get_appearance: do i = e_p_idx + 2, length + if (start) then + password(j:j) = request(i + 1) + j = j + 1 + end if + end do get_password + password_len = j-2 + + get_appearance: do i = e_idx + 2, length if (request(i) .eq. '=') then - s_a_idx = i + 1 + s_idx = i + 1 end if end do get_appearance - ! appearance = transfer(request(s_a_idx:length), appearance) + appearance = transfer(request(s_idx:length), appearance) write (created, *) time() - command = 'sqlite3 ' & - //trim(adjustl(db_path)) & + command = 'sqlite3 '//db_path(:Len_Trim(db_path)) & //' "INSERT INTO users (username,password' & //',apperance,x_pos,y_pos,last_login,created) VALUES (''' & - //request(s_u_idx:e_u_idx) & + // username(:username_len) & //''',''' & - //request(s_p_idx:e_p_idx) & + // password(:password_len) & //''',''' & - //request(s_a_idx:length) & + // appearance(:Len_Trim(appearance)) & //''',0,0,0,' & - //created//');"' + //created(:Len_Trim(created))//');"' write (12, *) command call execute_command_line(command) end subroutine add_user -end program main +end program main \ No newline at end of file