void cre_jnl_file_intrpt_rename(int fn_len, sm_uc_ptr_t fn) { mstr filestr; int status1, status2, ext_new_jnl_fn_len; uint4 status, ustatus; unsigned char ext_new_jnl_fn[MAX_FN_LEN]; error_def(ERR_FILEPARSE); error_def(ERR_RENAMEFAIL); error_def(ERR_FILEDELFAIL); error_def(ERR_FILEDEL); error_def(ERR_FILERENAME); filestr.addr = (char *)fn; filestr.len = fn_len; prepare_unique_name((char *)fn, fn_len, "", EXT_NEW, (char *)ext_new_jnl_fn, &ext_new_jnl_fn_len, &ustatus); assert(SS_NORMAL == ustatus); status1 = gtm_file_stat(&filestr, NULL, NULL, FALSE, &ustatus); if (FILE_STAT_ERROR == status1) { if (run_time) send_msg(VARLSTCNT(5) ERR_FILEPARSE, 2, filestr.len, filestr.addr, ustatus); else gtm_putmsg(VARLSTCNT(5) ERR_FILEPARSE, 2, filestr.len, filestr.addr, ustatus); return; } filestr.addr = (char *)ext_new_jnl_fn; filestr.len = ext_new_jnl_fn_len; status2 = gtm_file_stat(&filestr, NULL, NULL, FALSE, &ustatus); if (FILE_STAT_ERROR == status2) { if (run_time) send_msg(VARLSTCNT(5) ERR_FILEPARSE, 2, filestr.len, filestr.addr, ustatus); else gtm_putmsg(VARLSTCNT(5) ERR_FILEPARSE, 2, filestr.len, filestr.addr, ustatus); return; } if (FILE_NOT_FOUND == status1) { if (FILE_PRESENT == status2) { status = gtm_rename(filestr.addr, filestr.len, (char *)fn, fn_len, &ustatus); if (SYSCALL_ERROR(status)) { if (run_time) { VMS_ONLY(send_msg(VARLSTCNT(8) ERR_RENAMEFAIL, 4, filestr.len, filestr.addr, fn_len, fn, status, ustatus);) UNIX_ONLY(send_msg(VARLSTCNT(7) ERR_RENAMEFAIL, 4, filestr.len, filestr.addr, fn_len, fn, status);) } else { VMS_ONLY(gtm_putmsg(VARLSTCNT(8) ERR_RENAMEFAIL, 4, filestr.len, filestr.addr, fn_len, fn, status, ustatus);) UNIX_ONLY(gtm_putmsg(VARLSTCNT(7) ERR_RENAMEFAIL, 4, filestr.len, filestr.addr, fn_len, fn, status);) }
/* -------------------------------------------------------------------------------- This function renames a file, if exists. Otherwise do nothing. --------------------------------------------------------------------------------- */ int rename_file_if_exists(char *org_fn, int org_fn_len, char *rename_fn, int *rename_fn_len, uint4 *ustatus) { mstr orgfile; int status; jnl_tm_t now; memcpy(rename_fn, org_fn, org_fn_len + 1); /* Ensure it to be NULL terminated */ *rename_fn_len = org_fn_len; orgfile.addr = org_fn; orgfile.len = org_fn_len; if (FILE_NOT_FOUND == (status = gtm_file_stat(&orgfile, NULL, NULL, FALSE, ustatus))) return RENAME_NOT_REQD; else if (FILE_STAT_ERROR == status) { assert(SS_NORMAL != *ustatus); return RENAME_FAILED; } /* File is present in the system */ assert(0 < MAX_FN_LEN - org_fn_len - 1); JNL_SHORT_TIME(now); if (SS_NORMAL != (status = prepare_unique_name(org_fn, org_fn_len, "", "", rename_fn, rename_fn_len, now, ustatus))) { /* "prepare_unique_name" would not have set "ustatus" to the error code. So set it here and return */ assert(SS_NORMAL == *ustatus); *ustatus = status; assert(SS_NORMAL != *ustatus); return RENAME_FAILED; } assert(0 == rename_fn[*rename_fn_len]); if (SS_NORMAL != (status = gtm_rename(org_fn, org_fn_len, rename_fn, *rename_fn_len, ustatus))) { *ustatus = status; assert(SS_NORMAL != *ustatus); if (IS_GTM_IMAGE) send_msg_csa(CSA_ARG(NULL) VARLSTCNT(9) ERR_RENAMEFAIL, 4, org_fn_len, org_fn, *rename_fn_len, rename_fn, status, 0, *ustatus); else gtm_putmsg_csa(CSA_ARG(NULL) VARLSTCNT1(8) ERR_RENAMEFAIL, 4, org_fn_len, org_fn, *rename_fn_len, rename_fn, status, PUT_SYS_ERRNO(*ustatus)); return RENAME_FAILED; } if (IS_GTM_IMAGE) send_msg_csa(CSA_ARG(NULL) VARLSTCNT (6) ERR_FILERENAME, 4, org_fn_len, org_fn, *rename_fn_len, rename_fn); else gtm_putmsg_csa(CSA_ARG(NULL) VARLSTCNT (6) ERR_FILERENAME, 4, org_fn_len, org_fn, *rename_fn_len, rename_fn); return RENAME_SUCCESS; }
/* -------------------------------------------------------------------------------- This function renames a file, if exists. Otherwise do nothing. --------------------------------------------------------------------------------- */ int rename_file_if_exists(char *org_fn, int org_fn_len, char *rename_fn, int *rename_fn_len, uint4 *ustatus) { mstr orgfile; int status; error_def(ERR_FILERENAME); error_def(ERR_RENAMEFAIL); memcpy(rename_fn, org_fn, org_fn_len + 1); /* Ensure it to be NULL terminated */ *rename_fn_len = org_fn_len; orgfile.addr = org_fn; orgfile.len = org_fn_len; if (FILE_NOT_FOUND == (status = gtm_file_stat(&orgfile, NULL, NULL, FALSE, ustatus))) return RENAME_NOT_REQD; else if (FILE_STAT_ERROR == status) return RENAME_FAILED; /* File is present in the system */ assert(0 < MAX_FN_LEN - org_fn_len - 1); if (SS_NORMAL != (status = prepare_unique_name(org_fn, org_fn_len, "", "", rename_fn, rename_fn_len, ustatus))) return RENAME_FAILED; assert(0 == rename_fn[*rename_fn_len]); if (SS_NORMAL != (status= gtm_rename(org_fn, org_fn_len, rename_fn, *rename_fn_len, ustatus))) { if (run_time) send_msg(VARLSTCNT(9) ERR_RENAMEFAIL, 4, org_fn_len, org_fn, *rename_fn_len, rename_fn, status, 0, *ustatus); else gtm_putmsg(VARLSTCNT1(8) ERR_RENAMEFAIL, 4, org_fn_len, org_fn, *rename_fn_len, rename_fn, status, PUT_SYS_ERRNO(*ustatus)); return RENAME_FAILED; } if (run_time) send_msg(VARLSTCNT (6) ERR_FILERENAME, 4, org_fn_len, org_fn, *rename_fn_len, rename_fn); else gtm_putmsg(VARLSTCNT (6) ERR_FILERENAME, 4, org_fn_len, org_fn, *rename_fn_len, rename_fn); return RENAME_SUCCESS; }