bool is_palboth(char *in) { char num[32]; strcpy(num,in); if (!is_palindrome(num)) return false; to_oct(num); return (is_palindrome(num)); }
void list_pals(int start,int end) { char num[32]; char oct[32]; int width = 27; draw_line(width); printf("| %10s | %10s |\n","Decimal","Octal"); draw_line(width); for (int i = start; i <= end; i++) { sprintf(num,"%d",i); strcpy(oct,num); to_oct(oct); if (is_palboth(num)) printf("| %10s | %10s |\n",num,oct); } draw_line(width); }
void write_out_tar_header (struct cpio_file_stat *file_hdr, int out_des) { int name_len; union tar_record tar_rec; struct tar_header *tar_hdr = (struct tar_header *) &tar_rec; memset (&tar_rec, 0, sizeof tar_rec); /* process_copy_out must ensure that file_hdr->c_name is short enough, or we will lose here. */ name_len = strlen (file_hdr->c_name); if (name_len <= TARNAMESIZE) { strncpy (tar_hdr->name, file_hdr->c_name, name_len); } else { /* Fit as much as we can into `name', the rest into `prefix'. */ int prefix_len = split_long_name (file_hdr->c_name, name_len); strncpy (tar_hdr->prefix, file_hdr->c_name, prefix_len); strncpy (tar_hdr->name, file_hdr->c_name + prefix_len + 1, name_len - prefix_len - 1); } /* Ustar standard (POSIX.1-1988) requires the mode to contain only 3 octal digits */ to_oct (file_hdr->c_mode & MODE_ALL, 8, tar_hdr->mode); to_oct (file_hdr->c_uid, 8, tar_hdr->uid); to_oct (file_hdr->c_gid, 8, tar_hdr->gid); to_oct (file_hdr->c_filesize, 12, tar_hdr->size); to_oct (file_hdr->c_mtime, 12, tar_hdr->mtime); switch (file_hdr->c_mode & CP_IFMT) { case CP_IFREG: if (file_hdr->c_tar_linkname) { /* process_copy_out makes sure that c_tar_linkname is shorter than TARLINKNAMESIZE. */ strncpy (tar_hdr->linkname, file_hdr->c_tar_linkname, TARLINKNAMESIZE); tar_hdr->typeflag = LNKTYPE; to_oct (0, 12, tar_hdr->size); } else tar_hdr->typeflag = REGTYPE; break; case CP_IFDIR: tar_hdr->typeflag = DIRTYPE; break; case CP_IFCHR: tar_hdr->typeflag = CHRTYPE; break; case CP_IFBLK: tar_hdr->typeflag = BLKTYPE; break; #ifdef CP_IFIFO case CP_IFIFO: tar_hdr->typeflag = FIFOTYPE; break; #endif /* CP_IFIFO */ #ifdef CP_IFLNK case CP_IFLNK: tar_hdr->typeflag = SYMTYPE; /* process_copy_out makes sure that c_tar_linkname is shorter than TARLINKNAMESIZE. */ strncpy (tar_hdr->linkname, file_hdr->c_tar_linkname, TARLINKNAMESIZE); to_oct (0, 12, tar_hdr->size); break; #endif /* CP_IFLNK */ } if (archive_format == arf_ustar) { char *name; strncpy (tar_hdr->magic, TMAGIC, TMAGLEN); strncpy (tar_hdr->version, TVERSION, TVERSLEN); name = getuser (file_hdr->c_uid); if (name) strcpy (tar_hdr->uname, name); name = getgroup (file_hdr->c_gid); if (name) strcpy (tar_hdr->gname, name); to_oct (file_hdr->c_rdev_maj, 8, tar_hdr->devmajor); to_oct (file_hdr->c_rdev_min, 8, tar_hdr->devminor); } to_oct (tar_checksum (tar_hdr), 8, tar_hdr->chksum); tape_buffered_write ((char *) &tar_rec, out_des, TARRECORDSIZE); }